我爱编程

JS基础面试题——原型和原型链

2018-05-05  本文已影响0人  石燕平_Leo

这篇文章主要说原型及原型链,鉴戒了一些网络大神的想法,有什么疑问可以提出来大家一起共同解决

1. 原型的五条规则

原型链.png
   function Foo(name) {
      this.name = name;
      // return this;  // 本身会执行这一步
   }

   Foo.prototype.alertName = function() {
     alert(this.name);
   }

   var f = new Foo('shiyanping');

   f.printName = function() {
     console.log(this.name);
   }

   f.alertName();  // f.__proto__ -> Foo.prototype
   f.printName();
   console.log(f.toString());  // f.__proto__.__proto__

2. 如何准确判断一个变量是数组类型

arr instanceof Array

instanceof判断一个引用类型是什么引用类型,是通过proto(隐式原型一层一层往上找,能否找到对应构造函数的prototype)

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

function Element(ele) {
  this.ele = document.getElementById(ele);
}

Element.prototype.html = function(val) {
  var ele = this.ele;
  if (val) {
    ele.innerHTML = val;
    return this;
  } else {
    return ele.innerHTML;
  }
};

Element.prototype.on = function(type, fn) {
  var ele = this.ele;
  ele.addEventListener(type, fn);
  return this;
}

var element = new Element('main');

element.html('hello').on('click', function() {
  alert('handleClick');
});

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

function Foo(name) {
  this.name = name;
  // return this;  // 本身会执行这一步
}

var f = new Foo('shiyanping');
上一篇 下一篇

猜你喜欢

热点阅读