Test.prototype.name = "123";
Test.prototype = {name:'abc'};
请问这两句话的区别在哪?感觉都是给其的name属性修改值?
function Test(){}
Test.prototype.name = "123";
var test =new Test();
Test.prototype = {name:'abc'};
console.log(test.name);
为毛还是123,感觉后面已经修改成了abc
Test.prototype.name = "123";
Test.prototype = {name:'abc'};
请问这两句话的区别在哪?感觉都是给其的name属性修改值?
function Test(){}
Test.prototype.name = "123";
var test =new Test();
Test.prototype = {name:'abc'};
console.log(test.name);
为毛还是123,感觉后面已经修改成了abc
这个其实是个八股文,首先回复你的问题。
你代码的第二行是给原型扩展了一个 name 属性取值是 "123"
然后你实例化了一个 test 变量,这个变量的原型是 {name: 123} 这样的
接着你又修改了 Test 构造函数的原型,从现在开始你再使用 Test 构造函数实例的对象原型是 {name: 'abc'}
而你第二行实例对象的原型还是指向以前的 {name: '123'},以前实例化的对象并不会因为你后来修改原型对象引用而自动改变
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
上面的是修改prototype的一个属性,下面的是把整个prototype都改了