在使用delete删除原型链的属性和方法时课程讲的是错的

在使用delete删除原型链的属性和方法时课程讲的是错的

首先我看了视频和PDF资料http://img1.sycdn.imooc.com//climg/5ee9def9097412c606330850.jpg


然后我实际操作了,我故意删除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())  //不可以获得原型链方法

http://img1.sycdn.imooc.com//climg/5ee9df7809420e4a05820209.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,教辅是没有错的。教辅上说的是不能删除原型链上的属性:

http://img1.sycdn.imooc.com//climg/5ee9f3810912737604710106.jpg

那么就需要先实例化出来一个对象,去删除对象上的属性:

http://img1.sycdn.imooc.com//climg/5ee9f40509f5192907500404.jpg

依旧能访问:

http://img1.sycdn.imooc.com//climg/5ee9f40d091f8bac02890044.jpg


而同学是直接删除的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()')  //不可以获得原型链方法


http://img1.sycdn.imooc.com//climg/5ee9e03309dab21e04580221.jpg

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师