扫码关注官方订阅号
如果一个实例,通过继承而来,那么在这个实例上通过字面量的形式改变原型上存在的方法,会不会改变原型?
学习是最好的投资!
这个和继承没什么关系。举个例子来说:
function Person(){ this.name = ''; } Person.prototype.getName = function(){ return this.name; } var p = new Person(); p.speak = function(){ // ... } //不知道题主说的是不是这个意思,上面给p对象添加了一个speak方法,只是添加到这个对象上,并不会影响到Person.prototype,就是说再new出来一个Person实例就不会有speak方法 var p1 = new Person(); p1.speak //undefined //当然可以直接修改原型 p.__proto__.read = function(){} p1.read //function(){}
为什么你不写两行代码,自己来尝试一下呢?测试这么个功能,并不需要很多代码吧
function ClassA(){}; ClassA.prototype.a = "原型链"; var test = new ClassA(); console.log(test.a); test.a = "自定义"; console.log(test.a); delete test.a; console.log(test.a);
所以,你觉得会不会覆盖?
做个补充
var Person = function(name){ this.name = name; } Person.prototype.getName = function(){ console.log(this.name); } var p1 = new Person('张三'); p1.getName = function(){ this.name = '李四'; console.log(this.name); } var p2 = new Person('王五'); p1.getName(); // 李四 p2.getName(); // 王五
肯定会覆盖啦亲。。。你最好就是使用 XXX.prototype.method1 = function () {...} 这样添加属性
XXX.prototype.method1 = function () {...}
学ES2015+Babel就不用啃了
JavaScript进阶学习(二)—— 基于原型链继承的js工具库的实现方法
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
这个和继承没什么关系。举个例子来说:
为什么你不写两行代码,自己来尝试一下呢?测试这么个功能,并不需要很多代码吧
所以,你觉得会不会覆盖?
做个补充
肯定会覆盖啦亲。。。你最好就是使用
XXX.prototype.method1 = function () {...}这样添加属性学ES2015+Babel就不用啃了
JavaScript进阶学习(二)—— 基于原型链继承的js工具库的实现方法