首页 > 代码库 > javascript对象创建
javascript对象创建
一个js对象中有 [[proto]] [[class]] [[extensible]] 三个对象标签 ,在对象的属性上有 writable ,enumerable,configurable,value,get/set 五个属性标签
[[proto]] | 对象的原型 |
[[class]] | 对象所属的类型 |
[[extensible]] | 是否可以增加新的属性 |
writable | 对象的属性是否可写 |
enumerable | 对象的属性是否可以枚举 |
configurable | 对象的属性是否可配置 |
value | 属性的值 |
get/set | get set方法 |
对象的创建
字面量创建对象
var obj = {}; obj.x = 1; obj.y = 2;
构造函数new创建对象
function foo(){
}
foo.prototype.z = 3;
var obj = new foo();
obj.x = 4;
console.info(obj.z); //out:3 obj对象的[[proto]] 会指向构造函数的prototype对象,在foo.prototype对象上存在z属性,所有能访问到z属性的值
console.info(obj.x); //out:4
‘z‘ in obj //true
obj.hasOwnProperty(‘z‘); //false
in 操作符,可以遍历对象的属性,但它不保证顺序,同时会遍历对象原型链上的属性。如果只需要遍历对象本身的属性,使用hasOwnProperty();
function fun(){}
fun.prototype.z = 3;
var obj = new fun();
obj.x = 5;
obj.u = 9;
for(i in obj){
console.info(i); //x u z
}
for(i in obj){
if(obj.hasOwnProperty(i)){
console.info(i); //x u
}
}
Object.create()创建对象
var obj = Object.create({x : 1});
obj.x // 1
obj.hasOwnProperty(‘x‘);// false 说明 obj的原型 执行了{x:1}
var obj = Object.create(null);
obj.toString // undefined 如果为null 它的原型会指向null
javascript对象创建
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。