对象中的属性是无序的,每个属性都有一个字符串key和对应的value
每个属性都有属性标签(访问权限的控制):writable(可读/不可读)、enumerable(可枚举/不可)、configurable(可删除/不可)、value、get/set(方法)
每个对象都有一个原型,每个对象都有一个proto对象属性()、class标签(表示对象属于哪个种类)、extensible标签(对象是否允许继续增加属性)
对象构造:
除了本身被赋予的值之外,对象还有几个隐藏标签:
proto:对象的对象属性prototype上的赋值
class:对象的种类
extensible:是否允许该对象继续增加新的属性
另外对象的值(如 x=1),也有对应的属性或方法,提供一些访问权限的控制
writable:是否可写
enumerable:是否能被删除
configurable:是否能够枚举
value:值
get/set:
js对象的构造图
对象属性的一些属性。
对象结构111
对象结构.
var obj = {x:1,y:2}; obj.x; obj.y;
对象标签属性
每个对象都有 标签属性:
writable
enumerable
configurable
value
get/set
属性标签有:writable、enumerable、configurable、value,还提供了get/set方法,这些东西可以为每一个属性提供一个访问权限的控制,比如说是否可写、是否可以被删除掉、是否可以枚举。
除此以外,每个对象还有一个原型。
比如创建一个函数foo(),每一个函数都会有一个prototype这样一个对象属性。这个对象属性的作用:比如给foo.prototype.z设置为3,再去new一个foo()的话,那么指向的对象即obj,它的原型就会指向它的构造器的prototype属性,也就是foo.prototype。因为之前设置了foo的prototype属性的z属性是3,所以就会指向prototype的这样一个对象,并且它的z就位3。
所以当访问obj的x属性的时候,那么在这个对象上返回1。如果访问obj.z,因为在obj上没有z,所以就会继续查找它的原型z=3那么就返回3;如果它的原型上还是没有z,那么就会继续向上查找,一直找到原型链的末端。
除此之外,对象中还有一个class标签来表示它是属于哪一个种类的;还有一个extensible标签来表示这个对象是否允许继续增加新的属性。
1、对象包含一系列属性
2、属性是无序的
3、每个属性都有key和value
4、key是字符串
5、value是对应的值
1.对象属性是无序的键值对,属性有多重标签,标记可写,可枚举等,有一个prototype属性
属性标签1
key是字符串
对象定义1
对象的结构
var person = {}
Object.defineProperty(person,'name',{
configurable:false,//能否使用delete、能否需改属性特性、或能否修改访问器属性、,false为不可重新定义,默认值为true
enumerable:false,//对象属性是否可通过for-in循环,flase为不可循环,默认值为true
writable:false,//对象属性是否可修改,flase为不可修改,默认值为true
value:'xiaoming' //对象属性的默认值,默认值为undefined
});
qqqqqqqqqqqqqq
obj的原型会指向构造器的prototype属性
对象属性可以动态添加或删除,属性还有很多的关于对属性的动作
key都为字符串,都会把转成字符串,会tostirng一下
空对象做key,或带有值的对象做为key,都会tostring一下
对象的属性时无序的,每个属性都有一个字符串的key对应一个value
writable 是否可写,enumerable是否可以被删除,configurable是否可以枚举,[[proto]]原型,[[class]]标签是哪个种类的,[[extensible]]表示这个对象是否能继续增加新的属性
对象属性标签:wiritable(可写),enumeriable(可枚举),configurable(除了wiritable由true到false总是可以的,属性标签们是否可再被修改,可删除,可配置),value,get/set
对象有属性,原型,class,extensible可扩展性
对象构造: 除了本身被赋予的值之外,对象还有几个隐藏标签: proto:对象的对象属性prototype上的赋值 class:对象的种类 extensible:是否允许该对象继续增加新的属性 另外对象的值(如 x=1),也有对应的属性或方法,提供一些访问权限的控制 writable:是否可写 enumerable:是否能被删除 configurable:是否能够枚举 value:值 get/set:
对象中包含一系列属性,这些属性是无序的。每个属性都有一个字符串key和对应的value。
var obj = {};obj[1] = 1; obj['1'] =2; obj;//Object{1:2}
obj[{}] = true; obj[{x:1}] = true; obj// Object{1:2,[object Object] : true};
对象包含一系列无序的属性,每个属性(可动态添加或删除)都有一个字符串key和对应的value,每个对象都还有个原型
function foo(){}
foo.prototype.z=3;
var obj=new foo();
[proto](原型):指向foo()的prototype(函数的对象属性)
访问obj.z--查找对象属性,没有z,再在对象的原型链上继续查找一直到末端
对象的[class]标签表示它属于那个种类
对象的[extensible]标签表示它是否允许增加新的属性
对象包含一系列无序的属性,每个属性都有一个字符串key和对应的value
function foo(){}
foo.prototype.z=3;
var obj=new foo();
proto:对象的属性prototype的赋值
访问obj.z--查找对象属性,没有z,再在对象的原型链上继续查找