一.判断是否是 Array的五种方法
1.Array.isArray()
2.Object.prototype.toString.call('查找对象’).includes("Array")
其中includes函数是判断 前面返回的字符串中是否包含Array 这个字段的。用indexOf()替换也可以。PS:indexOf是返回字符串中第一次出现字段的下标的,返回-1是找不到。
3.Array.prototype.isPrototypeOf()
4.查找对象 instanceof Array
5.构造方法
查找对象 constructor.toString().includes("Array")
二.js 继承
原型链继承
function Person(name){
this.name = name,
this.getName = function(){
return this.name
}
}
Person.prototype.age = 11;
function Man(){
this.name = 'man'
}
Man.prototype = new Person()
var x = new Man()
console.log(x.age)
构造函数继承
PS:构造函数继承无法实现复用,因为他的方法都定义在构造函数中,不是原型中,且他也找不到父类原型中的属性,所以无法实现复用。
function Woman(name){
Person.call(this,name)
}
组合函数继承
Woman.prototype = new Person();
原型继承
function content(obj){
function f(){};
f.prototype = obj;
return new f();
}
寄生继承
function sup(obj){
var sub = content(obj);
sub.name = 'ss';
return sub;
}
寄生组合继承
function Superman(){
Person.call(this);
}
var con = content(new Person())
Superman.prototype = con;
con.constructor = Superman;
var a = new Superman()
console.log(a.getName())