在使用delete删除原型链的属性和方法时课程讲的是错的
首先我看了视频和PDF资料
然后我实际操作了,我故意删除prototype原型链上的方法和属性,很明显,是能删除的,所以我认为老师讲的是错的
上代码
function Animal(name, nums){ this.name =name this.nums=nums this.getInfo = function(){ console.log(this.name+':' +this.nums) } } Animal.prototype.says = 'lalal' Animal.prototype.saysa = function(){ console.log('shja') } console.log(Animal.prototype.says) console.log(Animal.prototype.saysa) delete Animal.prototype.says delete Animal.prototype.saysa() console.log(Animal.prototype.says) //不可以获得原型链属性 console.log(Animal.prototype.saysa) //可以获得原型链方法 console.log(Animal.prototype.saysa()) //不可以获得原型链方法
源自:JS面向对象
7-1 关键词(上)
25
收起
正在回答
2回答
同学你好,教辅是没有错的。教辅上说的是不能删除原型链上的属性:
那么就需要先实例化出来一个对象,去删除对象上的属性:
依旧能访问:
而同学是直接删除的prototype这个对象的属性(方法),是没有涉及到原型链,所以可以删除。
祝学习愉快~
彬十二
2020-06-17 17:19:48
为了直观观察,我重新上传带有字符串的输出
function Animal(name, nums){ this.name =name this.nums=nums this.getInfo = function(){ console.log(this.name+':' +this.nums) } } Animal.prototype.says = 'lalal' Animal.prototype.saysa = function(){ console.log('shja','原型方法') } console.log(Animal.prototype.says, 'Animal.prototype.says') console.log(Animal.prototype.saysa, 'Animal.prototype.saysa') delete Animal.prototype.says delete Animal.prototype.saysa() console.log(Animal.prototype.says, 'Animal.prototype.says') //不可以获得原型链属性 console.log(Animal.prototype.saysa , 'Animal.prototype.saysa') //可以获得原型链方法 console.log(Animal.prototype.saysa(), 'Animal.prototype.saysa()') //不可以获得原型链方法
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星