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

浙公网安备 33010602011771号