构造函数

问: 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.原型链

构造函数_第1张图片

    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('

hello imooc

')

div1.on('click',function(){

       alert(clicked)

})

你可能感兴趣的:(JS基础)