- object对象
定义一个对象
var obj = {};
obj.name = 'Kate';
var obj = {name:'Jerrt'}; var obj = new Object(); Object.defineProperty(obj,'age',{
configurable: //是否可配置、删除、修改;默认是false
writable: //是否可编辑 若config是false writable无意义
enumerable: //是否可枚举
value: //属性对应的value值
get、set: //此两项不能和writable、value同时出现
})
2. function对象
- prototype属性
- function对象的继承
function Person(name,age){
this.age = age;
this.name = name;
}
Person.prototype = {
eat : function(food){
console.log(this.name + '爱吃' + food);
},
sleep : function(){
console.log(this.name + '每天睡觉8小时');
}
}
Person.prototype.constructor = Person; var jack = new Person('jack',18);
jack.eat('蛋炒饭'); function Student(name,age){
Person.call(this,name,age);
} Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student;
var mike = new Student('mike',19);
mike.eat = function('冰淇淋'){
console.log('冰淇淋')
};
原型链的查找方法 调用一个属性或方法的时候 会现在实例化的对象上查找
如果找不到 会去原型上查找 一直到找到为止
- call,apply方法的区别
1. apply需要的参数 第一个this 第二个调用的方法的参数数组
2. call 第一个参数this 后面跟上所有的参数 用,分割
- Object的扩展方法
1. Object.keys(对象名) //列出指定对象的属性名
2. Object.seal //密封 writable变成false
3. Object.freeze //冻结 configurable和writable都为false
4. Object.create //创建一个新对象
5. Object.preventExtensions //禁止扩展
6. Object.getOwnPropertyDescriptor(对象名,属性名) //获取指定对象的某一个描述信息
7. Object.defineProperties()//创建多个属性 用{}隔开
8. 判断是否被密封 是否被冻结 是否可扩展