首页 > propotype到底是一个属性还是对象;

propotype到底是一个属性还是对象;

function student (){
   prototype
}

prototype在构造函数里面是对象还是属性,一会儿说属性,一会儿说对象;
还是说prototype对象中有一个prototype属性;

还有为什么叫student.prototype这个东西是一个对象;

prototype指向student.prototype 那么prototype是可以理解引用吗?
如果prototype是对象,那么对象prototype能指向对象student.prototype;


prototype是构造函数的属性,它的value是一个对象


请看图


为什么你要把属性对象对立起来?

不要在基本概念都不明确的情况下就开始动手编程
建议先去看书吧《javascript高级程序设计》


prototype是函数(函数也是对象)的一个属性,这个属性的值是一个对象,称为原型对象。

原型对象有一个属性constructor,属性的值是一个字符串,就是上面函数的名称。

当将这个函数作为构造函数时,实例化出来的对象,会继承构造函数的原型中的属性和方法。


为什么不能结合起来看呢 就像光即时波也是粒子一样 prototype既是一个对象的属性,本身也是一个对象


prototype是函数的属性,
对象的__proto__属性指向构造函数的prototype属性


prototype是构造函数的属性,函数实例化时,系统会自动加上这句:Function.prototype.constructor=Function,咱们从函数角度看,pro就是他一个属性,但是他自身又是一个对象,他有自己的属性,自身还有一个隐藏属性__proto__,指向了伟大的Object的原型对象,这就是为什么js里面的对象默认挂载toString这样默认方法,原型链,可以当作Java的继承理解即可,每当实例化函数的属性,就会产生对应的实例原型对象,三者关系都是彼此联系的。


一个变量引用(指向)一个对象不难理解吧?

var a = {};
var obj = { objProperty: a };

我现在说obj的objProperty属性是个对象不能反驳吧?
那我说objProperty这个对象也没错吧?
至于prototype里又有prototype, 用对象的原型链, 就可以做到.大致代码如下:

function Person(){
            this.name = "tinycolder";
        }
        Person.prototype.age = 22;

        var p1 = new Person();
        p1.prototype = Person.prototype;

        function Man(){
        
        }
        Man.prototype = p1;

        alert(Man.prototype.prototype.age);//22

        //参考
        var p2 = new Man();
        alert(p2.name);//tinycolder

具体请参考, 对象的原型链继承.
好好看书, 理解不了的概念就停下来慢慢分析咀嚼, 不要失乱了学习的心境.


函数的属性,该属性为对象。
属性和对象不是对立的概念


prototype是属性,但是属性的值可以为对象
就比如

var obj = {a:{}};

a是obj对象的一个属性,但是a也指向一个对象


属性,指向对象。
即指向对象的属性


书上看到的: 我们创建的每一个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是 包含可以由特定类型的所有实例共享 的属性和方法。如果按照字面意思来理解,那么prototype就是通过 调用构造函数而创建的那个对象实例 的原型对象。

【热门文章】
【热门文章】