构造函数
问: 1.判断一个变量是数组
2.写一个原型链
3.new的过程
4.zepto的构造使用。
知识点:
1.构造函数首字母大写。
function Foo (name,age){
this.name = name
this.age = age
return this //默认执行
}
var f = new Foo('zhangshan',22)
2.构造函数语法糖
var a ={} === var a = new Object()
var a = [] === var a = new Array()
var Foo(){} === var Foo = new Function()
3.instanceof 判断一个函数是否是一个变量的函数
4.原型规则
4.1 引用类型都有对象特性,可以拓展
4.2 引用类型都有__proto__ 隐示原型 是一个对象
4.3 引用类型都有 prototype显示类型 是一个对象
4.4 隐示类型的__proto__ === 构造函数的prototype obj.__proto__ === Object.prototype
4.5 当试图找到一个对象的某个属性时,如果这个对象没有,那么会去他的隐示对象中找(构造函数的显示类型)
5.原型链
6.instanceof 判断引用类型属于哪个构造函数
语法:a instanceof Array
原理:a的__proto__找到Foo.prototype
答案:
1.var arr = []
arr instanceof Array //Array
typeof arr //object
2.function Animal(){
this.eat = function
}
function Dog(){}
Dog.prototype = new Animal()
var hashiqi = new Dog
3.创建一个对象 --》this指向这个新对象 --》对this赋值--》返回this
4.zepto设计和源码分析
实例:
封装一个dom查询的栗子
funtion Elem(id){
this.elem = document.getElementById(id)
}
Elem.prototype.html = function(val){
var elem = this.elem
if(val){
elem.innerHtml = val
return this 链式操作
}else{
return elem.innerHtml
}
}
Elem.prototype.on = function (type,fn){
var elem = this.elem
elem.addEventListener(type,fn)
}
var div1 = new Elem('div1')
div1.html('<p>hello imooc</p>')
div1.on('click',function(){
alert(clicked)
})