JavaScript原型链

原型链:

如果构造器有个原型对象A,则由该构造器创建的实例都必然复制于A。在JS中,对象实例并没有原型(但是有个不可见的__prototype__属性),而构造器(Constructor)有原型,属性“<构造器>.prototype”指向原型。

对象,可以说“构造自”某个原型,而不可说“拥有”某个原型。

function myFunc() {

    var name = "stephenchan";
    var age = 23;
    function code() {
    alert("Hello World!");

    };

}
var obj = new myFunc();
//输出undefined,对象实例没有原型
alert(obj.prototype);
//输出myFunc的函数代码,obj由myFunc构造出来的
alert(obj.constructor);
//输出true
alert(obj.constructor == myFunc);

//输出[object Object],说明myFunc的原型是一个对象
alert(myFunc.prototype);
//输出function Function() { [native code] },[native code]的意思是JavaScript引擎的内置函数
alert(myFunc.constructor);
//输出true,函数原型的构造器默认是该函数
alert(myFunc.prototype.constructor == myFunc);

构造器与函数的概念是一致的,即代码中, myFunc就是一个构造器 ,因为通过new myFunc()就可以构造出一个对象实例了。

原型其实也是一个对象实例。再强调一下原型的含义是:如果构造器有个原型对象A,则由该构造器创建的实例(Object Instance)都必然复制于A,而且采用的读遍历机制复制的。读遍历复制的意思是:仅当写某个实例的成员时,将成员的信息复制到实例映像中。即当构造一个新的对象时,新对象里面的属性指向的是原型中的属性,读取对象实例的属性时,获取的是原型对象的属性值。而当对象实例对一个属性进行写操作时,才会将属性写到新对象实例的属性列表中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值