JavaScript面试技巧(原型和原型链)

1.instanceof用于判断引用类型属于哪个构造函数的方法。

   那么,我们如何准确的判断一个变量是数组类型呢?

  var  arr = [];

  arr  instanceof  Array  //结果为true,这样判断

   有的人可能会想到  typeof arr,但typeof是无法判断是否是数组类型的,包括object

2.原型规则

 1)所有的引用类型(数组、对象、函数)都具有对象特性,即可以自由扩展属性(除了“null”外)

    2)所有的引用类型(数组、对象、函数)都有一个_proto_属性,属性值是一个普通的对象

 3)所有的函数,都有一个prototype属性,属性值也是一个普通的对象

 4)所有的引用类型(数组、对象、函数),_proto_属性值指向它的构造函数的prototype属性值

 5)当试图得到一个对象的某个属性时,如果这个对象本身没有这个属性,那么会去它的_proto_(即它的构造函数的prototype)中寻找

 所有的引用类型都有一个_proto_属性,所有的函数都有一个prototype属性

3.描述new一个对象的过程

  • 创建一个新的对象
  • this指向这个新的对象
  • 执行代码,即对this赋值
  • 返回this

4.写一个原型链继承的例子

 1 //一个封装DOM查询的例子
 2 function Elem(id){
 3     this.elem = document.getElementById(id)
 4 }
 5 
 6 Elem.prototype.html = function (val) {
 7     var elem = this.elem
 8     if (val) {
 9         elem.innerHTML = val
10         return this //链式操作
11     }else {
12         return elem.innerHTML
13     }
14 }
15 
16 Elem.prototype.on = function (type,fn) {
17     var elem = this.elem
18     elem.addEventListener(type,fn)
19     //return this
20 }
21 
22 var div1 = new Elem ('div1')
23 
24 div1.html('<p>hello 博客园</p>').on('click',function () {
25     alert('clicked')
26 })//.html('<p>javacsript</p>')

 

posted @ 2017-09-01 13:50  呆果  阅读(381)  评论(0)    收藏  举报