Object的属性(firebug中没有找到)

var pro={
city:"shanghai",
list:[,,,,]
}
var Person=function(name,age){
this.name=name;
this.age=age;
this.arr=[,,,,];
}
Person.prototype=pro;
var p=new Person("hongda",);
console.log("hasOwnProperty:");
console.log(p.hasOwnProperty("name"))
console.log(p.hasOwnProperty("city"))
console.log("isPrototypeOf:");
console.log(pro.isPrototypeOf(p));
console.log(Person.prototype.isPrototypeOf(p));
console.log("propertyIsEnumerable:");
console.log(p.propertyIsEnumerable("arr"));
console.log(p.propertyIsEnumerable("list"));

Object静态方法:

Object.create

var obj=Object.create({name:"hongda",age:});
console.dir(obj);

Object.getPrototypeOf:

var pp=Object.getPrototypeOf(p);
console.dir(pp);
console.log(pp===pro);

Object.getOwnPropertyDescriptor:

Object.getOwnPropertyNames:

var desc=Object.getOwnPropertyDescriptor(p,"name");
console.dir(desc); var names=Object.getOwnPropertyNames(p);
console.dir(names);

Object.keys(obj)

跟Object.getOwnPropertyNames(obj)差不多,区别就是Object.keys只适用于可枚举的属性,而Object.getOwnPropertyNames返回对象自动的全部属性名称。

具体的可以看链接http://www.cnblogs.com/chollaflower/p/3203210.html

Object.defineProperty:

Object.defineProperty(p, 'english_Name', {
set : function(n){
console.log('set 访问器');
this.nameValue = n; //一个新的属性,如果同样是name的话,就死循环了。
},
get : function(){
console.log('get 访问器');
return 'my english_Name is ' + this.nameValue;
},
// value : 'Tom', //如果在这里有value或writable特性,就会报错:Uncaught TypeError: Invalid property. A property cannot both have accessors and be writable or have a value。
//writable: true,
enumerable: false,
configurable: false
});
p.english_Name="Tom";
console.dir(p);
var desc=Object.getOwnPropertyDescriptor(p,"english_Name");
console.dir(desc);

当value或writable使用时,报错

不可以同set或get同时使用

p.english_Name="Tom“;

不写的话,console.dir(p)不会显示。

之所以显示nameValue是因为在set中设置的。

Object.defineProperties:

var p={};
Object.defineProperties(p, {
sex: {
value: 'boy',
writable: true,
enumerable: false,
configurable: false
},
age2: {
set: function(x) {
this.age2Value = x;
},
get: function() {
return this.age2Value;
}
}
});
console.dir(p);
var desc=Object.getOwnPropertyDescriptor(p,"sex");
console.dir(desc);
console.log(p.hasOwnProperty("sex"));
console.log(p.hasOwnProperty("city"));
console.log(p.hasOwnProperty("age2"));
console.dir(p);
console.log(p.sex);

不清楚为什么console.dir()不能查看到添加的属性。

http://www.cnblogs.com/chollaflower/p/3202731.html

Object.preventExtensions(object)
防止新的属性添加到对象
Object.isExtensible(object)
是否可添加属性到对象

console.log(Object.isExtensible(p));  //true
Object.preventExtensions(p);
console.log(Object.isExtensible(p)); //false

Object.seal(object)
不能添加和删除属性
Object.isSealed(object)

console.log(Object.isSealed(p));//false
Object.seal(p);
console.log(Object.isSealed(p));//true

完全封死对象,可以

Object.freeze(object)
防止现有属性和属性值的修改,并防止新特性的添加。
Object.isFrozen(object)

console.log(Object.isFrozen(p));//false
Object.freeze(p);
console.log(Object.isFrozen(p));//true

http://blog.csdn.net/shyleoking/article/details/7316174

http://www.cnblogs.com/chollaflower/archive/2013/07/20/3203210.html

http://www.cnblogs.com/rexmzk/archive/2012/12/14/2815112.html

http://msdn.microsoft.com/zh-tw/library/kb6te8d3(v=vs.94).aspx

JavaScript:Object属性方法的更多相关文章

  1. JavaScript Object.defineProperty()方法详解

    Object.defineProperty() 方法直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象. 语法 Object.defineProperty(obj, prop ...

  2. JavaScript:Array属性方法

    ,,,,]; console.dir(arr); var pro=Object.getPrototypeOf(arr); console.dir(pro); 来一个个的查看数组的属性,方法 1.Arr ...

  3. Javascript对象属性与方法汇总

    Javascript对象属性与方法汇总 发布时间:2015-03-06 编辑:www.jquerycn.cn 详细介绍下,javascript对象属性与对象方法的相关知识,包括javascript字符 ...

  4. ECMAScript5 Object的新属性方法

    虽然说现在并不是所有的浏览器都已经支持ECMAScript5的新特性,但相比于ECMAScript4而言ECMAScript5被广大浏览器厂商广泛接受,目前主流的浏览器中只有低版本的IE不支持,其它都 ...

  5. javascript Object的新方法

    今天复习es6,又看到Object的一堆方法,与es5的表现又有不一致,耗费了一整天,整理一下: 前几天在司徒正美的书里又看到了es5 Object的字眼,为了向下兼容,大神们也是牛逼的整理出一系列i ...

  6. Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象。

    Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象. 语法EDIT Object.defineProperty(obj, ...

  7. JavaScript 复制对象【Object.assign方法无法实现深复制】

    在JavaScript这门语言中,数据类型分为两大类:基本数据类型和复杂数据类型.基本数据类型包括Number.Boolean.String.Null.String.Symbol(ES6 新增),而复 ...

  8. [转]ECMAScript5 Object的新属性方法

    虽然说现在并不是所有的浏览器都已经支持ECMAScript5的新特性,但相比于ECMAScript4而言ECMAScript5被广大浏览器厂商广泛接受,目前主流的浏览器中只有低版本的IE不支持,其它都 ...

  9. javascript学习总结之Object.assign()方法详解

    最近再写ES6的文章时候发现自己对Object.assign()方法不太了解,之前也没有接触过所以就就查阅了相关的资料,为了自己以后肯能会用到以及对知识进行巩固,所以在这里记录下自己学习的点点滴滴,毕 ...

随机推荐

  1. OA系统部署短信过程

    安装dotNetFx40_Client_setup.exe插件 安装mysql_installer_community_V5.6.21.1_setup.1415604646.msi数据库 根据数据库版 ...

  2. [py]函数中yield多次返回,延迟计算特性-杨辉三角

    搞清什么是杨辉三角 每行是一个数组, 第一行: [1] 第二行: [1, 1] 第三行: [1, 2, 2, 1] ... 画的好看点就是,不过没啥卵用 1 / \ 1 1 / \ / \ 1 2 1 ...

  3. VirtualBox 虚拟磁盘的UUID修改

    个人测试环境,想构建一套Standby RAC环境,不想再重复去安装系统浪费时间,直接复制之前安装RAC前的一套VirtualBox的虚拟环境,不过打开时报错: 未能打开位于 Z:\Vbox\Stan ...

  4. Lintcode: Lowest Common Ancestor

    Given the root and two nodes in a Binary Tree. Find the lowest common ancestor(LCA) of the two nodes ...

  5. c#string为传值模式

    闲的无聊,记忆中好像是在c/c++语言中string为传址模式(函数修改参数时会影响原来的string参数值),比较好奇c#下对于string参数到底是传值还是传址有些疑问,便亲自测试. 1.结果aa ...

  6. codefirst configuration

    codefirst 书写配置类,用于entity与数据库中表或view映射 1.对应表或视图都用this.ToTable("SimpleCompanyLoanView", &quo ...

  7. A7架构

    以Cortex-A7 MPCore processor来进行说明,这是一款主打低功耗的多核处理器,采用ARMv7-A架构,最多支持4个core. 每个core都有L1级的Cache,分为instruc ...

  8. AO中的空间关系

    名词解释: Boundary(边界): 只有线和面才有边界.面的边界是指组成面的框架线:线的边界是指线的二个端点(即起点和终点,不包括中间部分的节点):点没有边界. Interior(内部): 除去边 ...

  9. Linux下的Make命令实例详解

    众所周知在Linux系统下的make 命令是系统管理员和程序员用的最频繁的命令之一.管理员用它通过命令行来编译和安装很多开源的工具,程序员用它来管理他们大型复杂的项目编译问题.下面这 篇文章我们将用一 ...

  10. 基于Spring Cloud的微服务落地

    微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务.但如果要将微服务架构运用到生产项目上,并且能够发挥该架构模式的重要作用,则需要微服务框架的支持. 在Java生态圈,目前使用较多的微服务 ...