Giter Site home page Giter Site logo

Comments (3)

ruanyf avatar ruanyf commented on May 6, 2024

谢谢指出,原来的例子确实不当,已经改过来了。

from jstutorial.

Xiami2012 avatar Xiami2012 commented on May 6, 2024

现在的版本仍然有个描述上的小问题

但是,出于历史原因,这时依然可以将writable从true变成false,即seal方法对writable属性无效。

seal 之后是无法把 writable 从 false 变成 true 的,而 seal 之前可以。
仅仅是 seal 前后都可以将 writable 从 true 变为 false 。

seal方法对writable属性无效 的措辞个人认为有点欠妥。这句话的理解应该是 seal 前后 对 writable 属性的修改 这个操作的结果不产生任何影响,但实际上如上文所述无法将 writable 从 false 变为 true 了。

测试环境:Firefox 33.0.2
测试代码:

var o = {p : 0};
Object.getOwnPropertyDescriptor(o, 'p');
/* 未封闭 */
Object.defineProperty(o, 'p', {writable: false});
Object.getOwnPropertyDescriptor(o, 'p');
Object.defineProperty(o, 'p', {writable: true});
Object.getOwnPropertyDescriptor(o, 'p');
/* 封闭后 */
Object.seal(o);
Object.defineProperty(o, 'p', {writable: false});
Object.getOwnPropertyDescriptor(o, 'p');
Object.defineProperty(o, 'p', {writable: true});
Object.getOwnPropertyDescriptor(o, 'p');

from jstutorial.

ruanyf avatar ruanyf commented on May 6, 2024

谢谢指出,改成下面这样了。

可写性(writable)有点特别。如果writable为false,使用Object.seal方法以后,将无法将其变成true;但是,如果writable为true,依然可以将其变成false。

var o1 = Object.defineProperty({}, 'p', {writable: false});
Object.seal(o1);
Object.defineProperty(o1,'p',{writable:true}) 
// Uncaught TypeError: Cannot redefine property: p 

var o2 = Object.defineProperty({}, 'p', {writable: true});
Object.seal(o2);
Object.defineProperty(o2,'p',{writable:false}) 

Object.getOwnPropertyDescriptor(o2, 'p')
/* { value: '',
  writable: false,
  enumerable: true,
  configurable: false } */

上面代码中,同样是使用了Object.seal方法,如果writable原为false,改变这个设置将报错;如果原为true,则不会有问题。

from jstutorial.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.