JavaScript:Object属性方法
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属性方法的更多相关文章
- JavaScript Object.defineProperty()方法详解
Object.defineProperty() 方法直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象. 语法 Object.defineProperty(obj, prop ...
- JavaScript:Array属性方法
,,,,]; console.dir(arr); var pro=Object.getPrototypeOf(arr); console.dir(pro); 来一个个的查看数组的属性,方法 1.Arr ...
- Javascript对象属性与方法汇总
Javascript对象属性与方法汇总 发布时间:2015-03-06 编辑:www.jquerycn.cn 详细介绍下,javascript对象属性与对象方法的相关知识,包括javascript字符 ...
- ECMAScript5 Object的新属性方法
虽然说现在并不是所有的浏览器都已经支持ECMAScript5的新特性,但相比于ECMAScript4而言ECMAScript5被广大浏览器厂商广泛接受,目前主流的浏览器中只有低版本的IE不支持,其它都 ...
- javascript Object的新方法
今天复习es6,又看到Object的一堆方法,与es5的表现又有不一致,耗费了一整天,整理一下: 前几天在司徒正美的书里又看到了es5 Object的字眼,为了向下兼容,大神们也是牛逼的整理出一系列i ...
- Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象。
Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象. 语法EDIT Object.defineProperty(obj, ...
- JavaScript 复制对象【Object.assign方法无法实现深复制】
在JavaScript这门语言中,数据类型分为两大类:基本数据类型和复杂数据类型.基本数据类型包括Number.Boolean.String.Null.String.Symbol(ES6 新增),而复 ...
- [转]ECMAScript5 Object的新属性方法
虽然说现在并不是所有的浏览器都已经支持ECMAScript5的新特性,但相比于ECMAScript4而言ECMAScript5被广大浏览器厂商广泛接受,目前主流的浏览器中只有低版本的IE不支持,其它都 ...
- javascript学习总结之Object.assign()方法详解
最近再写ES6的文章时候发现自己对Object.assign()方法不太了解,之前也没有接触过所以就就查阅了相关的资料,为了自己以后肯能会用到以及对知识进行巩固,所以在这里记录下自己学习的点点滴滴,毕 ...
随机推荐
- 1128 - Greatest Parent---LightOj(LCA+离线算法)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1128 给你一颗树,树的每个节点都有一个权值,树根是节点0,权值为1,树中每个节点的权值 ...
- 钱币兑换问题--hdu1284(完全背包)
Problem Description 在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法.请你编程序计算出共有多少种兑法. Input 每行只有一个正整数N,N小于32768. ...
- IO流(6)获取功能
获取功能: * public String getAbsolutePath():获取绝对路径 * public String getPath():获取相对路径 * public String getN ...
- eclipse spket插件 错误 Syntax error on token "(", FunctionExpressionHeader expected after this
在myEclipse抵抗了两个小时后,终于被spket插件搞上了.其实上学期自己也学过Ext.js,哈哈..慕名而来的. 但当时功力不足,不得以要停止修炼.可现在不同,java的基础和j2ee的ssh ...
- 【Pyton】【小甲鱼】正则表达式(一)
正则表达式学习: >>> import re >>> re.search(r'FishC','I love FishC.com!') <_sre.SRE_Ma ...
- python-面向对象-09_类属性和类方法
类属性和类方法 目标 类的结构 类属性和实例属性 类方法和静态方法 01. 类的结构 1.1 术语 —— 实例 使用面相对象开发,第 1 步 是设计 类 使用 类名() 创建对象,创建对象 的动作有两 ...
- What is Druid?
Druid is a data store designed for high-performance slice-and-dice analytics ("OLAP"-style ...
- 006-springboot2.0.4 配置log4j2,以及打印mybatis的sql
一.pom配置 普通项目 <!-- log4j2 --> <dependency> <groupId>org.apache.logging.log4j</gr ...
- 007-ant design 对象属性赋值,双向绑定
1.state对象属性赋值 设对象为 state={ datavalue:{ id:'', name:'', }, } 修改对象属性为: SetName=(e)=>{ let val=e.tar ...
- HashMap(不是线程安全)与ConcurrentHashMap(线程安全)
HashMap不是线程安全的 ConcurrentHashMap是线程安全的 从JDK1.2起,就有了HashMap,正如前一篇文章所说,HashMap不是线程安全的,因此多线程操作时需要格外小心. ...