这种javascript中的坑怎么处理?
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