小编tre*_*mbl的帖子

在Javascript中'冻结'数组?

由于ECMA-262规范Javascript已经获得了Object.freeze()方法,该方法允许添加或删除其属性无法更改的对象.

var obj = {'a':1, 'b:2'};
Object.freeze(obj);
Object.isFrozen(obj);       // returns true
obj.a = 10;                 // new assignment has no affect
obj.a;                      // returns 1
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.

我想知道,freeze()是否也适用于数组.

var arr = [1, 2];
Object.freeze(arr);
Object.isFrozen(arr);      // returns true
arr[0] = 10;
arr;                       // returns [10, 2] ... ouch!
Run Code Online (Sandbox Code Playgroud)

也许我错了,但我的印象是,Array继承自Object.

typeof obj                 // "object"
typeof arr                 // "object"
Run Code Online (Sandbox Code Playgroud)

任何想法,指针,启示都将受到高度赞赏.

javascript arrays object freeze

34
推荐指数
2
解决办法
2万
查看次数

使用'invert'函数在Javascript中扩展Boolean对象

我想用一个原型函数扩展Boolean对象,该函数反转它的当前值.到现在为止,我一直在做这样的事情:

var bool = true;
bool = !bool;
console.log(bool);  // false
Run Code Online (Sandbox Code Playgroud)

我尝试扩展布尔对象的尝试并不富有成效.那是我得到了多远:

Boolean.prototype.invert = function() {
    return !this.valueOf();
}

var bool = true;
bool = bool.invert();
console.log(bool);  // false
Run Code Online (Sandbox Code Playgroud)

关闭,但不够近.我正在寻找这些方面的解决方案:

var bool = true;
bool.invert();
console.log(bool);  // false
Run Code Online (Sandbox Code Playgroud)

是的,我知道,扩展内置对象通常被认为是一个坏主意.请让我们将讨论保存一天.

javascript boolean prototype-programming

5
推荐指数
1
解决办法
807
查看次数