javascript 原型相关一个问题?
本文介绍了javascript 原型相关一个问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
//code
function Person(){};
Person.prototype.name = "Leon";
Person.prototype.age = 22;
Person.prototype.say = function(){
alert(this.name + "," + this.age);
}
var p1 = new Person();
console.info(p1.__proto__.age = 30);
console.info(p1.__proto__);
//console
30
Person { name="Leon", age=30, say=function()}
记得书中描述是不可通过__proto__
修改原型的,为什么我自己测试完了,结果却是可以的?
我们通过new Person()创建了一个Person对象p1,此时会在内存中为p1对象分配一块内存空间,在p1的内存空间中会有一个_proto_内部属性,这个内部属性是不能被访问的,它也指向Person原型。
需要特别注意的是:原型中的值是不会被替换的,仅仅只是在属性查找时被对象自己空间中的同名属性所覆盖。
解决方案
能用。强烈
不建议使用。
标准明确规定,只有浏览器必须部署这个属性,其他运行环境不一定需要部署,而且新的代码最好认为这个属性是不存在的。因此,无论从语义的角度,还是从兼容性的角度,都不要使用这个属性
这篇关于javascript 原型相关一个问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文