栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

JavaScript原型对象的理解

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/717391.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号