function user(name){
this.name=name
}
user.prototype.show=function(){
console.log(this.name)
}
var u1=new user("张三")
instanceof 用于判断变量的类型
console.log(u1 instanceof user) true
isPrototypeOf() 检测当前对象是否是基于对应构造函数创建出来的
var t=user.prototype.isPrototypeOf(u1)
console.log(t) true
判断属性方法
hasOwnProperty() 判断当前的属性和方法是否源于对象构造函数内部
var r=u1.hasOwnProperty("show")
console.log(r) false
in 判断当前对象是否具有对应属性和方法 通常用于 代码得健壮性
var r1="show" in u1
console.log(r1) true
编写一个方法:传入两个参数 key 对象,判断当前key是否在对象得原型中,如果在返回真 ,不再返回false
function hasOwnprototype(key,obj){
return key in obj && obj.hasOwnProperty(key)==false
}
var r2=hasOwnprototype("show",u1)
console.log(r2) true
改变this的指向性call和apply
function user(name,age){
this.name=name
this.age=age
}
user.prototype.show=function(){
console.log(this.name)
}
user.prototype.abc=function(a,b,c){
console.log(this.name+a+b+c)
}
var u1=new user("张三",23)
var u2=new user("李四",35)
call() 第一个参数 改变的对象 后续参数传入方法对应的参数
u1.show.call(u2) 李四
u1.abc.call(u2,1,3,5) 李四135
apply() 第一个参数 改变的对象 第二个参数[ ]放入参数列表
u1.show.apply(u2) 李四
u1.abc.apply(u2,[1,3,5]) 李四135
Math.max()用于输出一组数据中的最大值
var result=Math.max(3,34,6,8,5)
console.log(result)
求数组中的最大值 apply用法
var arr=[1,3,5,7,9]
var result=Math.max.apply(null,arr)
console.log(result)