圣杯模式,对象枚举,例题
继承:圣杯模式
function inherit(Target,Origin){
function F(){}
F.prototype = Origin.prototype;
Target.prototype = new F()
Target.prototype.constructor = Target;
Target.prototype.uber = Origin.prototype;
}
Father.prototype.lastName = "Deng"
function Father(){}
function Son(){}
inherit(Son,Father);
var son = new Son()
var father = new Father()
var obj = {
name :"13",
age : 123,
sex : "male",
height : 180,
weight : 75
}
for (var key in obj)
console.log(obj[key])
注意最后一行,应该使用obj[key],而不能使用obj.key访问对象属性的值,因为obj.key = obj[“key”],方括号里面是字符串。
var obj = {
name :"13",
age : 123,
sex : "male",
height : 180,
weight : 75,
_proto_:{
lastName : "deng"
}
}
for (var prop in obj){
if(obj.hasOwnProperty(prop)){
console.log(obj[prop])
}
}
obj.hasOwnProperty()用来检测obj里面的属性到底是obj的属性还是obj原型的属性
in操作符用来检测,属性是否在对象上。eg:
“height” in obj
注意属性height用“ ”字符串表示
A instanceof B
instanceof操作符用来检测:看A对象的原型链上有没有B的原型
arguments:argumengts身上只有callee和lenth属性
arguments.callee:指向自身引用。
This
- 函数预编译过程: this——>window
- 全局作用域里:this——>window
- call/apply可以改变函数运行时this的指向
- obj.func();func()里面this指向obj。简而言之,谁调用的this,this就指向谁。
实现克隆的方法:
- 判断是不是原始值
- 判断是数组还是对象
- 建立相应的数组或对象
判断是数组还是对象的方法:instanceof toString construtor
条件判断 ? 是 : 否 并且会返回值