今天,一个技术群里小朋友提出一个问题: Object.prototype.a = function () { console.log('a') } Function.prototype.b = function () { console.log('b') } function F(){} var f = new F(); f.a(); f.b(); F.a(); F.b(); 我默念心中的万能公式,答案一下就出来了: a; 报错(f.b is not a function): a: b: 这下子…
关键代码    this.parent = Cat;    this.parent.apply(this); function Cat(){ this.climb = function(){ alert("我会爬树"); } } var cat = new Cat(); cat.climb(); function Dog(){ this.parent = Cat; this.parent.apply(this);//当然也可以传参, this.eat = function(){ ale…
复制继承:简单理解,就是把父对象上的所有属性复制到自身对象上: function Cat(){ this.climb = function(){ alert("我会爬树"); } } function Dog(){ this.eat = function(){ alert("我会吃"); } this.extend = function(parent){//extend方法实现了复制 for(var key in parent){ //console.log(key…
原型是js中的难点加重点,也是前端面试官最爱问的问题之一,因为面试官可以通过被面试者对原型的理解.来判断被面试者对js的熟悉程度. 原型的定义 Js所有的函数都有一个prototype属性,这个属性引用了一个对象,即原型对象,也简称原型.这个函数包括构造函数和普通函数,我们讲的更多是构造函数的原型,但是也不能否定普通函数也有原型. 先看一下普通函数的原型 例如: function animal(){ } //这个函数就有原型属性,引用的对象就是object 今天看了一个视频,那位老师讲的很清晰,…
对象的原型链:一个对象所拥有的属性不仅仅是它本身拥有的属性,他还会从其他对象中继承一些属性.当js在一个对象中找不到需要的属性时,它会到这个对象的父对象上去找,以此类催,这就构成了对象的原型链. 下面分别介绍__proto__和prototype两个属性 __proto__:所有的对象均具有的属性,可称为隐式原型,一个对象的隐式原型指向构造该对象的构造函数的原型,也保证了实例能够访问在构造函数原型中定义的属性和方法. prototype:方法这个特殊的对象,除了有上述的__proto__属性之外…
之前面试的时候遇到过原型和原型链方面的题目,具体的已经忘了,只记得当时回答的稀里糊涂,今天查了一些资料,把自己所理解的写出来,加深记忆. 1,前提 在js中,对象都有__proto__属性,一般这个是被称为隐式的原型,该隐式原型指向构造该对象的构造函数的原型. 函数比较特殊,它除了和其他对象一样有__proto__属性,还有自己特有的属性----prototype,这个属性是一个指针,指向一个包含所有实例共享的属性和方法的对象,称之为原型对象.原型对象也有一个constructor属性,该属性指…
Object.prototype 原型和原型链 原型 Javascript中所有的对象都是Object的实例,并继承Object.prototype的属性和方法,有些属性是隐藏的.换句话说,在对象创建时会存在预定义的属性,其中有一个属性就是原型对象.在函数对象中存在原型对象prototype,在普通对象中没有prototype,但存在__proto__.或者说使用function定义的对象与使用new操作符生成的对象之间有一个重要的区别,这个区别就是function定义的对象有一个prototy…
JS中原型链,说简单也简单. 首先明确: 函数(Function)才有prototype属性,对象(除Object)拥有__proto__. 首先,我画了一张图. 所谓原型链,指的就是图中的proto这一条指针链! 原型链的顶层就是Object.prototype,而这个对象的是没有原型对象的. 可在chrome的控制台里面输入: Object.__proto__ 输出是: function Empty() {} 原型链,如此而已. 对于新人来说,JavaScript的原型是一个很让人头疼的事情…
再讲一遍好了( 参考https://blog.csdn.net/cc18868876837/article/details/81211729 https://blog.csdn.net/lc237423551/article/details/80010100 ) Javascript中所有的对象都是Object的实例,并继承Object.prototype的属性和方法,也就是说,Object.prototype是所有对象的爸爸. 首先,我们需要牢记两点:①__proto__和constructo…
1.说明 函数(Function)才有prototype属性,对象(除Object)拥有__proto__. 2.prototype与__proto__区别 示例: <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-w…