ECMAScript5新特性之Object.isExtensible、Object.preventExtensions

阻止对象扩展后:

1 不能添加属性。严格模式下,添加属性还会抛异常。
2 可以修改属性的值。
3 可以删除属性。
4 可以修改属性描述符。

var fruit = {
    name : ‘苹果‘,
    desc : ‘红富士‘
};
//
console.log(‘isExtensible‘,Object.isExtensible(fruit)); // true
Object.preventExtensions(fruit);
console.log(‘isExtensible‘,Object.isExtensible(fruit)); // false
//
fruit.address = ‘烟台‘;
console.log(‘添加address属性‘,fruit);
//
fruit.desc = ‘金帅‘;
console.log(‘修改属性‘,fruit);
//
delete(fruit.desc);
console.log(‘删除属性‘,fruit);
//
Object.defineProperty(fruit,‘desc‘,{
    enumerable : false
});
console.log(‘修改属性描述符为不可枚举‘,Object.keys(fruit));
Object.defineProperty(fruit,‘desc‘,{
    enumerable : true
});
console.log(‘修改属性描述符为可枚举‘,Object.keys(fruit));
时间: 2024-10-18 10:33:57

ECMAScript5新特性之Object.isExtensible、Object.preventExtensions的相关文章

《深入理解JavaScript》—— ECMAScript5 新特性

(1) 标准库的新功能 1. 元编程 ① 获取和设置原型 -- Object.create() -- Object.getPrototypeOf() ② 通过属性描述符管理属性特性 -- Object.defineProperty() -- Object.defineProperties() -- Object.create() -- Object.getOwnPropertyDescriptor() ③ 列出属性 -- Object.keys() -- Object.getOwnPropert

ECMASCRIPT5新特性(转载)

Function 1: Object.create 这是一个很重要的改动,现在我们终于可以得到一个原型链干净的对象了.以前要创建一个类 Js代码   function Cat(name) { this.name   = name; this.paws   = 4; this.hungry = false; this.eaten  = []; } Cat.prototype = { constructor : Cat, play        : function () { this.hungry

ECMAScript5新特性之对象篇

1.Ojbect.create(O[,properties]): var Person = {       name   : 'hcc',       hungry : false,       play : function (){                this.hungry = true;                return 'I am playing!';             },       speak : function () {                

ECMAScript5新特性之isSealed、seal

封闭对象后: 1 不能增加.删除属性.2 可以修改属性.3 不能修改属性描述符.会抛异常. var fruit = { name : '苹果', desc : '红富士' }; // console.log('isSealed',Object.isSealed(fruit)); // false Object.seal(fruit); console.log('isSealed',Object.isSealed(fruit)); // true // fruit.address = '烟台';

ECMAScript5新特性之属性描述符读写对象的属性

直接读写.使用Getter/Setter accessors 'use strict';var fruit = {}; Object.defineProperties(fruit,{ 'name' : { configurable : true, enumerable : true, get : function(){ console.log('Getter方法'); return name; }, set : function(val){ console.log('Setter方法'); na

ECMAScript5新特性之isFrozen、freeze

对象被冻结后: 1 不能添加属性. 2 不能删除属性. 3 不能修改属性.(赋值) 4 不能修改属性描述符.(会抛异常) var fruit = { name : '苹果', desc : '红富士' }; // console.log('isFrozen',Object.isFrozen(fruit)); // false Object.freeze(fruit); console.log('isFrozen',Object.isFrozen(fruit)); // true // fruit

前端开发者进阶之ECMAScript新特性--Object.create

前端开发者进阶之ECMAScript新特性[一]--Object.create Object.create(prototype, descriptors) :创建一个具有指定原型且可选择性地包含指定属性的对象 参数:prototype 必需.  要用作原型的对象. 可以为 null.descriptors 可选. 包含一个或多个属性描述符的 JavaScript 对象."数据属性"是可获取且可设置值的属性. 数据属性描述符包含 value 特性,以及 writable.enumerab

温故知新——JS_ ES5新特性简介

ES5浏览器支持情况: 一般来说,除了针对个别特性的特殊说明,各大主流浏览器都支持es5,包括 Chrome 13+ Firefox 4+ Safari 5.1* IE 9* 其中IE9不支持es的严格模式,从IE10开始支持.Safari 5.1不支持Function.prototype.bind. 1.Strict Mode, 即所谓的严格模式. 在一个文件.项目或函数的开头加上"use strict";即开启严格模式. 详细内容参考:参考链接1: 参考连接2: 参考链接3--阮一

ES6新特性:Proxy代理器

ES6新特性:Proxy: 要使用的话, 直接在浏览器中执行即可, node和babel目前还没有Proxy的polyfill;,要使用的话,直接在浏览器中运行就好了, 浏览器的兼容性为:chrome>39或者firefox>18: Proxy的基本使用: Proxy如其名, 它的作用是在对象和和对象的属性值之间设置一个代理,获取该对象的值或者设置该对象的值, 以及实例化等等多种操作, 都会被拦截住, 经过这一层我们可以统一处理,我们可以认为它就是“代理器” ; Proxy是一个构造函数, 使