这种javascript中的坑怎么处理?
发布于 10 年前 作者 think2011 5342 次浏览 最后一次编辑是 8 年前
var F = function (name) {
    this.name = name;
};

F.prototype.show = {
    str: '我希望我不会被改变呢,因为我可是构造函数的原型的东西哦'
};

var a = new F('我是A');
a.show.str = '我是A,我改了自己的prototype';
console.log(a.show);    // 你猜猜结果是什么?

var b = new F('我是B');
console.log(b.show);    // 你猜猜结果是什么?
10 回复

原型prototype是多个对象共享的。

var F = function (name) { this.name = name; this.show={str:‘我希望我不会被改变呢,因为我可是构造函数的原型的东西哦’}; }; var a = new F(‘我是A’); a.show.str = ‘我是A,我改了自己的prototype’; console.log(a.show); // 你猜猜结果是什么?

var b = new F(‘我是B’); console.log(b.show);

用this

var F = function (name) {
    this.name = name;
};

F.prototype.show = {
    str: '我希望我不会被改变呢,因为我可是构造函数的原型的东西哦'
};
F.prototype.setShow=function(some){
    this.show=some;
    
    
}
var a = new F('我是A');
 
console.log(a.show);    // 你猜猜结果是什么?

var b = new F('我是B');
b.setShow({ str: '我是oo,我only改了自己的prototype' });

console.log(b.show);    // 你猜猜结果是什么?

console.log(a.show);    // 你猜猜结果是什么?
var c = new F('我是C');

console.log(c.show);

good,以对象方式赋值对象属性

这个都算坑啊。。。 js 名声有这么差

这不是坑,这是js动态语言的特性 可以动态添加属性 楼主可能是写c或者java的

这为什么是坑。。

你了解了原型就不觉得它是坑了- -。。

我觉得你还没有think in javascript,javascript和C++都是受到抱怨最多的语言,C++是因为比较难,javascript是因为思维不一样。

楼主对于原型没有理解导致的这个问题,我觉得要填补这个坑可能需要楼主深入理解一下原型…的用处

是的是的,我发现了。:D

回到顶部