Instanceof 原型链
People.prototype===Student.prototype.__proto__ //True
james.hasOwnProperty('sayhi') //false
换句话说,proto就是去找上一层class的prototype
Class是ES6语法规范,是由ECMA委员会发布
ECMA只规定语法规则,不规范如何实现
以上是V8引擎实现方式
如何判断一个变量是否是数组array(instanceof)
var ary=[1,2,3,4];
console.log(ary.intanceof Array) //true
class的原型是本质
手写jquery插件
console.log('jquerydemo');
class JQuery{
constructor(selector){
const result =document.querySelectorAll(selector)
const length =result.length;
for (let i =0;i<length;i++){
this[i]=result[i];
}
this.length=length
//类似于数组,但其实是object
this.selector=selector;
}
get(index){
return this[index]
}
each(fn){
for(let i = 0;i<this.length;i++){
const elem =this[i]
fn(elem)
}
}
on(type,fn){
return this.each(elem=>{
elem.addEventListener(type,fn,false)
})
}
}
//插件
JQuery.prototype.dialog=function(info){
alert(info)
}
class myJQuery extends JQuery{
constructor(selector){
super(selector)
}
addClass(className){
}
style(data){
}
}
//const $p = new JQuery('p');
//$p.get(1)
//$p.each
//$p.on('click',()=>alert('clicked'))
每个函数都有一个prototype属性
这个属性都有一个指针,指向一个对象
这个对象包含由特定类型所有实例共享的属性和方法
使用原型的好处是可以让所有对象实例共享他们包含的方法和属性
一般通过instanceof关键字来基于原型链来检测变量的类型
Object 是所有js class的父类