CNode

这种javascript中的坑怎么处理?

Tthink2011发布于12 年前最后回复12 年前10 回复6275 浏览0 收藏
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)

3
359056163#1·12 年前

原型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);

Y
yakczh#2·12 年前

用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);

S
sdfcbs91#3·12 年前
引用 yakczh用this

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

D
dotnil#4·12 年前

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

Y
yakczh#5·12 年前

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

R
racyily#6·12 年前

这为什么是坑。。

J
jhjiangABC#7·12 年前

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

R
ringtail#8·12 年前

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

W
wh1100717#9·12 年前

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

参与回复
登录后即可参与回复。登录