V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
xss
V2EX  ›  JavaScript

蛋疼....

  •  
  •   xss · 2017-07-05 20:34:19 +08:00 · 2731 次点击
    这是一个创建于 2700 天前的主题,其中的信息可能已经有所发展或是发生改变。
    root@test:~# node test.js
    100
    300
    true
    100
    true
    100
    
    root@test:~# cat test.js 
    function Test(){
    }
    Test.prototype.v = 100;
    
    var t = new Test();
    console.log(t.v);
    t.v = 300;
    
    console.log(t.v);
    console.log(delete t.v);
    console.log(t.v);
    console.log(delete t.v);
    console.log(t.v);
    

    delete operator

    If a property with the same name exists on the object's prototype chain, then, after deletion, the object will use the property from the prototype chain (in other words, delete only has an effect on own properties).

    4 条回复    2017-07-06 21:22:06 +08:00
    crazyxhz
        1
    crazyxhz  
       2017-07-05 22:02:41 +08:00
    有啥问题?
    delete:Return value
    true for all cases except when the property is an own non-configurable property, in which case, false is returned in non-strict mode.
    gongbaodd
        2
    gongbaodd  
       2017-07-06 10:28:31 +08:00
    没毛病,基于原型嘛
    xss
        3
    xss  
    OP
       2017-07-06 13:54:32 +08:00
    @crazyxhz @gongbaodd 最后一次 delete 的时候理解上, 应该返回 false ?因为没有 use strict....
    crazyxhz
        4
    crazyxhz  
       2017-07-06 21:22:06 +08:00   ❤️ 1
    @xss 非严格模式下,所有 delete 操作都范围 true,除非
    使用 defineProperty 定义了一个 non-configurable 的属性,例如:
    Object.defineProperty(obj, 'key', {
    configurable: false
    });
    delete obj.key 在上面情况非严格模式下返回 false

    在严格模式下,所有情况都返回 true,删除 non-configurable 的属性直接报错
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3409 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 11:54 · PVG 19:54 · LAX 03:54 · JFK 06:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.