delete方法,老师我测试了不同浏览器,发现say需要加()才能删除?

delete方法,老师我测试了不同浏览器,发现say需要加()才能删除?

//delete

function fun(){

    this.name="zhangsan";

    this.say=function(){

        alert(this.name);

    }

}

var obj=new fun();

// alert(obj.name);

// delete obj.name;

// alert(obj.name);


delete say;//此处代码在浏览器测试没有报错,使用say()时反而成功删除了say方法

obj.say();


正在回答

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

2回答

同学你好,问题解答如下:

1、代码有误,无论是删除say,还是删除greet方法,都不能直接使用,需要通过实例化的对象调用。如下:

http://img1.sycdn.imooc.com//climg/6001167709c19b0604500161.jpg

say未定义使用就会报错

http://img1.sycdn.imooc.com//climg/600116a509b6b0ea06000047.jpg

另外,截图中报错greet未定义在131行,是因为全局中没有greet方法,不能调用而报错

http://img1.sycdn.imooc.com//climg/6001168c094b7f7a13280214.jpg

并不是说删除了greet方法,obj.greet()无法调用而报错。

2、正确删除应该是这样

http://img1.sycdn.imooc.com//climg/6001178209120e1d04520155.jpg

http://img1.sycdn.imooc.com//climg/6001178b0980091405990129.jpg

详细用法可以参考资料:

https://file.mukewang.com/class/assist/791/6616789/2bmikttlh79/delete%E7%94%A8%E6%B3%95.pdf

祝学习愉快!

  • Golden几何 提问者 #1

    不好意思,是我忘加对象了。好的谢谢~

    2021-01-15 14:27:57
提问者 Golden几何 2021-01-15 10:53:38

这里原型链加了调用也可以删除呢,这是不是证明其实对象方法不能删除?

为什么调用的时候可以删除?

http://img1.sycdn.imooc.com//climg/600101d50916538213730489.jpg

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

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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