JavaScript原型对象的理解

JavaScript原型对象的理解,第1张

JavaScript原型对象的理解

原型(prototype)

        每个对象创建时都会关联一个prototype属性,prototype指向该对象的原型对象。并可以通过prototype调用或访问原型对象的方法和属性。如编写一个只包含基本数据类型属性的构造函数,那么该构造函数实例化后对应的原型对象便为object。

        当使用某个对象的prototype属性构造方法或属性后,该对象可以直接访问到该方法/属性,无需再通过prototype/__proto__使用,类似于c++中的类,子类继承了父类的方法并可以直接调用。对象(未实例化)也可以通过prototype属性调用到构造函数里的属性,类似于c++中的静态成员,未经过实例化仍然可以访问。

person.prototype.h = 18;
console.log(person.prototype.h);
console.log(person.h);

                                                   

 下文中的person实例化对象person1也可以直接访问到h属性。

__proto__属性:

        每个对象对象实例化后都会有__proto__属性,调用该属性得到该对象的原型对象。

function person(name, age) {
            this.name = name;
            this.age = age;
            // this.say = say;
        }
var person1 = new person('xxx', 99);
console.log(person1.__proto__);
console.log(person.prototype);
console.log(person1.__proto__ === person.prototype);

                                                  

         当实例对象调用某方法或属性时,若当前对象没有该方法或属性,那么程序会找到该对象的原型对象,查找是否含有该方法或属性。原型对象也是对象,自然也有原型对象,如果在原型对象中仍找不到该属性或方法,那么会找到原型对象的原型对象,直至找到该属性或方法或原型对象为null为止。而一个个原型对象构造出来的链式结构便为原型链,原型链的顶部时object对象,object对象的原型对象为null。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5713712.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存