javascript中Object使用详解
作者:bea
代码如下: function forEach(o){ var html =""; for(var i in o){ html += i+"="+o[i]+" "; } console.log(html); console.log(o); } //1 //Object.create(proto) //Object.create(proto,descriptors) //使用指定的原型和属性来创建一个对象 //参数: //proto:新创建对象的原型,可为
代码如下:
function forEach(o){
var html ="";
for(var i in o){
html += i+"="+o[i]+" ";
}
console.log(html);
console.log(o);
}
//1 //Object.create(proto) //Object.create(proto,descriptors) //使用指定的原型和属性来创建一个对象 //参数: //proto:新创建对象的原型,可为null //descriptors:一个可选对象,把属性名映射到属性描述符 //返回一个新创建的对象,继承自proto,同时拥有descriptors所秒速的属性。
代码如下:
var obj = Object.create({x:1,y:2},{
z:{value:3,writable:true,enumerable:true,configurable:true}
});
forEach(obj)
obj.z=5
console.log(obj)
console.log("=====================================================")
//2 //Object.defineProperties(o,descriptors) //创建或配置对象的多个属性 //参数: //o:要在其上创建或者配置属性的对象 //descriptors:将属性名映射到属性描述符的对象 //返回对象o
代码如下:
Object.defineProperties(obj,{
a:{value:"a",writable:false,enumerable:true,configurable:true},
b:{value:"b",writable:false,enumerable:true,configurable:true}
})
forEach(obj);
console.log("=====================================================")
//3 //Object.defineProperty(o,name,desc) //创建或配置对象的一个属性 //参数: //o:将在其上创建或配置属性的对象 //name:将创建或配置的属性名字 //desc:一个属性描述符对象,描述要创建的新属性或对现有属性的修改 //返回对象o
代码如下:
Object.defineProperty(obj,"c",{value:"c",writable:false,enumerable:false,configurable:true})
forEach(obj);
console.log("=====================================================")
//4 //Object.freeze(o) //将一个对象设为不可改变,不会影响继承属性 //参数: //o:要冻结的对象 //返回 true|false
代码如下:
var p = {x:1,y:2}
Object.freeze(p);
p.x =2;
console.log(p);
console.log(Object.isFrozen(p)) //true,一旦冻结 无法解冻
console.log("=====================================================")
//5 //Object.getOwnPropertyDescriptor(o,name) //参数: //o:一个对象 //name:待查询的属性名 //查询一个属性的特性 //返回对象指定属性的一个属性描述符对象,如果不存在指定属性则返回undefined. /* 属性描述符就是一个普通的javascript对象,描述某个对象的特性,有二种javascript属性。数据属性有一个值以及三个性质:可枚举性(enumerable)、 可写性(writable)、以及可配置性(configurable).访问器属性(accessor property)有一个getter和/或setter方法,以及可枚举性。 数据属性的描述符: { value:任意javascript值, writable: true|false, enumerable: true|false, configurable:true|false } 访问器属性的描述符: { get: function 或 undefined :替换属性值 set: function 或 undefined :替换可写性 enumerable:true|false, configurable:true|false } */
代码如下:
var o5 = Object.getOwnPropertyDescriptor(obj,"c");
console.log(o5);
forEach(o5);
console.log("=====================================================")
//6 //Object.getOwnPropertyNames(o) //返回非继承属性的名字 //参数: //o:一个对象 //返回一个包含o的所有非继承属性的名字,包括哪些不可枚举的属性。{enumerable:false}
代码如下:
var o6 = Object.getOwnPropertyNames(obj);
console.log(o6);
console.log("=====================================================")
//7 //Object.getPrototypeOf(o) //参数: //o:一个对象 //返回一个对象的原型
代码如下:
var o7 =Object.getPrototypeOf(obj);
console.log(o7);
console.log("=====================================================")
//8 //Object.hasOwnProperty(propname); //参数: //propname包含对象的属性名的字符串 //检查一个属性是否是继承的 //返回true|false
代码如下:
console.log(obj.hasOwnProperty("x")); //=>false
console.log(obj.hasOwnProperty("z")); //=>true
console.log("=====================================================")
//9 //Object.isExtensible(o); //判断某个对象上是否可以添加新属性 //参数: //o:待检查可扩展性的对象 //返回 能添加为true|不能为false //描述:所有的对象在创建的时候都是可扩展的,直到他们被传入 Object.preventExtensions(o) Object.seal(o) 或 Object.freeze(o);
代码如下:
console.log(Object.isExtensible(obj)); // =>true
//Object.preventExtensions(obj)//将它设置为不可扩展
//console.log(Object.isExtensible(obj)); //=>false
console.log("=====================================================")
//10 //Object.isFrozen(o) //判断对象是否不可改变 //参数: //o:待检查的对象 //如果o已冻结并不改变则为true;否则为false;
代码如下:
console.log("=====================================================")
//11 //object.isPrototypeOf(o) //判断当前对象是否为另一个对象的原型 //参数: //o:所有对象 //如果object是o的原型 则为true,如果o不是一个对象或者object不是o的原型 则为false.
代码如下:
var o = new Object();
Object.prototype.isPrototypeOf(o) // true
Array.prototype.isPrototypeOf([1,2]) //true;
Object.prototype.isPrototypeOf(Function.prototype) //true
console.log("=====================================================")
//12 //Object.isSealed(o) //判断一个对象的属性是否可添加或删除 //参数: //o:待检查的对象 //如果o是封闭的则为true,否则为false. //如果不可以向一个对象添加新的(非继承)属性,并且现有的(非继承)属性不可删除,则是封闭的。 //封闭一个对象常用的方法是Object.seal(o) 或 Object.freeze(o)
console.log("=====================================================")
//13 //object.keys(o) //返回自由的可枚举属性名 //参数: //o:一个对象
代码如下:
console.log(Object.keys({x:1,y:2}) ) //=>[x,y]
console.log("=====================================================")
//14 //Object.preventExtensions(o) //禁止在一个对象上添加新的属性 //参数: // o:待设置可扩展的对象 //一旦设为不可不可扩展,它就再也不能改为可扩展
console.log("=====================================================")
//15 //object.propertyIsEnumerable(propname) //检测某个属性是否在for/in 中 循环可见 //参数 //propname:包含对象的指定属性名的一个字符串 //如果对象有一个名为propname的非继承属性,并且该属性可以枚举,则返回true.
代码如下:
var o15 = new Object();
o15.x = 15;
o15.propertyIsEnumerable("x"); //true;
o15.propertyIsEnumerable("y"); //false;
o15.propertyIsEnumerable("toString"); //false;
console.log("=====================================================")
//16 //Object.seal(o) //阻止添加或删除对象的属性 //参数 //o:待封闭的对象 //返回处于封闭状态的参数对象o
//17 //Object.toLocaleString() //返回对象本地的本地化字符串标示 //Object类提供的默认的toLocaleString()方法只是简单的调用toString()方法。 //不过要注意,其他类(Array、Date、Number等)都各自定义自己的这个方法的版本。用于执行本地化字符串转换。定义自己的的类时,可能也需要覆盖这个方法。
//18 //object.toString() //定义一个对象的字符串表示形式 //在javascript程序中一般不会经常显示的调用toString()方法。一般情况下,在对象中定义这个方法,系统会在需要时自动调用它以便将该对象装换成字符串。
//19 //Object.valueOf() //给定对象的原始值 //返回 与指定对象关联的原始值,如果存在这样一个值的话,如果没有与改对象关联的值,则返回对象本身
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- JavaScript插件化开发教程 (一)
- js的toLowerCase方法用法实例
- js的toUpperCase方法用法实例
- JS输入用户名自动显示邮箱后缀列表的方法
- js判断鼠标左、中、右键哪个被点击的方法
- js判断是否按下了Shift键的方法
- js获取json元素数量的方法
- javascript修改图片src的方法
- js获取内联样式的方法
- js获取元素外链样式的方法
- jquery复选框多选赋值给文本框的方法
- jQuery+ajax实现动态执行脚本的方法
- javascript将异步校验表单改写为同步表单
- JavaScript中实现sprintf、printf函数
- javascript批量修改文件编码格式的方法
- JavaScript中的包装对象介绍
- 浅谈JSON中stringify 函数、toJosn函数和parse函数
- 浅谈JavaScript Math和Number对象
- js判断一个字符串是否包含一个子串的方法