推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
xss

蛋疼....

  •  
  •   xss · Jul 5, 2017 · 3170 views
    This topic created in 3259 days ago, the information mentioned may be changed or developed.
    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 replies    2017-07-06 21:22:06 +08:00
    crazyxhz
        1
    crazyxhz  
       Jul 5, 2017
    有啥问题?
    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  
       Jul 6, 2017
    没毛病,基于原型嘛
    xss
        3
    xss  
    OP
       Jul 6, 2017
    @crazyxhz @gongbaodd 最后一次 delete 的时候理解上, 应该返回 false ?因为没有 use strict....
    crazyxhz
        4
    crazyxhz  
       Jul 6, 2017   ❤️ 1
    @xss 非严格模式下,所有 delete 操作都范围 true,除非
    使用 defineProperty 定义了一个 non-configurable 的属性,例如:
    Object.defineProperty(obj, 'key', {
    configurable: false
    });
    delete obj.key 在上面情况非严格模式下返回 false

    在严格模式下,所有情况都返回 true,删除 non-configurable 的属性直接报错
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1094 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 23:26 · PVG 07:26 · LAX 16:26 · JFK 19:26
    ♥ Do have faith in what you're doing.