javascript 原型相关一个问题?
PHPz
PHPz 2017-04-11 11:31:39
[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原型。

需要特别注意的是:原型中的值是不会被替换的,仅仅只是在属性查找时被对象自己空间中的同名属性所覆盖。

PHPz
PHPz

学习是最好的投资!

全部回复(3)
怪我咯

能用。强烈不建议使用。

标准明确规定,只有浏览器必须部署这个属性,其他运行环境不一定需要部署,而且新的代码最好认为这个属性是不存在的。因此,无论从语义的角度,还是从兼容性的角度,都不要使用这个属性

黄舟

你可以看看这个回答,我觉得能帮助你弄清楚吧

阿神

浏览器环境下提供了对__proto__的访问,其他的环境下不一定有。而且__proto__也是不建议使用的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号