精华内容
下载资源
问答
  • 废话少说,上一个简单代码: ...f.prototype.protoPro='这是原型对象的属性'; let ins1=new f(); let ins2=new f(); console.log(ins1.thisPro);//这我的属性 ins1.thisPro='这我ins1的属性'; console.log...

     废话少说,上一个简单代码:

    function f(){
    	this.thisPro='这是我的属性';
    }
    f.prototype.protoPro='这是原型对象的属性';
    let ins1=new f();
    let ins2=new f();
    console.log(ins1.thisPro);//这是我的属性
    ins1.thisPro='这是我ins1的属性';
    console.log(ins1.thisPro);//这是我ins1的属性
    console.log(ins2.thisPro);//这是我的属性
    ins2.thisPro='这是我ins2的属性';
    console.log(ins2.thisPro);//这是我ins2的属性
    console.log(f.prototype.protoPro);//这是原型对象的属性
    ins1.__proto__.protoPro='ins1到此一游';
    console.log(f.prototype.protoPro);//ins1到此一游
    ins2.__proto__.protoPro='ins2到此一游';
    console.log(f.prototype.protoPro);//ins2到此一游
    //到这里,ins1还没有自己的protoPro属性,如果访问这个属性就会自动到原型对象上面去找。
    console.log(ins1.protoPro);//"ins2到此一游",注意这时候这个属性依旧是属于原型对象的
    ins1.protoPro="aaaaaaaaa";//跟上面不一样了,这里相当于为ins1新创建了一个自身的属性protoPro,以后再ins1.protoPro就会返回这个自身属性的值,要找原型那个protoPro就只能通过ins1.__proto__或者f.prototype去找。
    

    总的来说,这俩都是用来访问原型对象的,原型对象可以通过用来new的那个function即构造函数的prototype去访问,如果把原型对象当作一个类,这样去访问原型对象的属性跟方法,就有点像其他语言的static,但是多了一项很厉害的,就是可以通过实例的__proto__去访问这个原型对象,而且在实例对象找不到某个属性/方法时,也会自动跑到原型对象上面去找。

    打个比方,你玩某个网游登录了一个帐号,这个帐号不同分区开了多个小号,那么构造函数就是你自己,你创建了多个实例(不同的小号但都是你在玩),每个实例自身的属性不同(不同的分区不同的角色等;这种属性即构造函数里面this出来的或者后来用实例点出来的),你还指定了原型对象(你那一张银行卡),你甚至可以在日后重新指定原型对象(换另一张银行卡)。你的小号在游戏的时候使用的都是小号里面的角色信息(自身属性),当你开始为小号氪金的时候,小号自己是没有氪金的功能的,只有你的银行卡(原型对象)有氪金的“函数”,所以你的小号氪金相当于银行卡在氪金。所有小号都用同一张卡去氪金,于是后来啊,你的某个小号女角色跟游戏里的老公结婚了,对方为你疯狂撒币……因此你这个特别的小号有了自己的氪金函数,只是跟你的银行卡相比较之下,似是而非罢了。

    展开全文
  • 什么是原型?什么是原型链? 原型 ...每一个实例对象都有一个proto属性,指向的构造函数的原型对象,构造函数的原型对象一个对象,也有一个proto属性,这样一层一层往上找就形成了原型链。 ...

    什么是原型?什么是原型链?

    原型
    1.所有函数都有一个prototype(原型),属性值是一个普通的对象
    2.所有引用类型都有一个——proto——隐式原型,属性值是一个普通的对象
    3.所有引用类型——proto——属性指向 它构造函数的prototype
    原型链
    每一个实例对象都有一个proto属性,指向的构造函数的原型对象,构造函数的原型对象也是一个对象,也有一个proto属性,这样一层一层往上找就形成了原型链。

    展开全文
  • 构造函数的实例的原型就是构造函数的原型对象 ...什么是原型,什么是原型对象什么是构造函数,下面我们通过代码解释 function foo(name,age){ this.name = name this.age = age console.log(this.name)

    构造函数的实例的原型就是构造函数的原型对象

    原型链是js的一种继承方式,他的基本思想就是通过原型链继承多个引用类型的属性和方法。每个构造函数都有一个原型对象,原型有一个属性指回构造函数
    在这之前大家思考一个问题?什么是原型,什么是原型对象,什么是构造函数,下面我们通过代码解释
    function foo(name,age){
                this.name = name
                this.age = age
                console.log(this.name)
                console.log(this.age)
         }
         foo.prototype.del = function(a,b){
             console.log(a-b)
         }
         var childfoo = new foo("杨雨",25)
         childfoo.del(20,10)
         console.log(foo.prototype)
         console.log(childfoo.__proto__)
         console.log(childfoo.__proto__ == foo.prototype)
    

    效果:

    11
    分析:

    首先要明白:构造函数是用于创建特定类型对象的。我们有一个构造函数,他有一个原型对象:foo.prototype,我们通过foo.prototype加点的形式来创建原型对象的方法,原型对象的方法可以被实例继承使用,但是不能自己直接使用,比如我们直接使用foo.del(),就会报错(foo.del is not a function),而我们又创建了一个foo实例,名为childfoo,实例都会有一个__proto__属性,这个属性指向原型,实例的原型就是构造函数的原型对象(这个可以从上图输出第四十五行看到)。所以我们的实例可以使用构造函数的方法。实例要想使用某个方法或者某个属性先在自己内部找,找不到再通过__proto__,去他的原型里边找,还没有的话,再次通过__proto__去他的原型的原型里边找,这样链式寻找就形成了原型链。有的话就直接使用,没有就该报啥错报啥错吧。

    生活举例

    我们想买苹果(home是smallMarket的一个实例),发现家里没有,我们就去最近的smallMarket去寻找(home.__proto__ = smallMarket.prototype )结果发现smallMarket也没有,但是superMarket有,所以,我们需要建立联系,smallMarket.prototype.apple = superMarket.prototype.apple 在这个例子当中,home的原型就是苹果,smallMarket的原型对象也是苹果

    代码实现:

    function superMarket() {
    
            }
            superMarket.prototype.apple = "苹果"
    
            function smallMarket() {
    
            }
            smallMarket.prototype.apple = superMarket.prototype.apple
            var home = new smallMarket()
            console.log(smallMarket.prototype)
            console.log(home.apple)
    

    效果:

    11
    有问题留言,我们一起解决!!!

    展开全文
  • 要了解原型对象,先了解对象 数据类型 undefined、null、boolean、number、string、object 引用类型String,Number,Boolean,Object,Function,Array,Data,RegExp,Error 我们可以使用九中引用类型来创建对象实例 原型...

    要了解原型对象,先了解对象

    数据类型
    undefined、null、boolean、number、string、object
    引用类型String,Number,Boolean,Object,Function,Array,Data,RegExp,Error

    我们可以使用九中引用类型来创建对象实例

    原型对象

    创建三个对象

            var str = new String('abc')
            console.log(str)
    
            var num = new Number(123)
    
            console.log(num)
    
            var obj = new Object()
            obj.name = "张三"
    
            console.log(obj)
    

    在这里插入图片描述每一个实例对象都有自己的__proto__属性指向创建自己的原型对象。
    在这里插入图片描述每个原型对象也有着自己的原型对象——object,object是所以对象的最终原型。
    除了__proto__属性外还有个prototype属性,这个也是用来指向原型的,不过是给创建对象的引用类型使用的,指向自己

    console.log(str.__proto__ === String.prototype)//true
    

    而原型对象也可以使用一个叫做constructor属性找到创建自己孩子的对象

    console.log(str.constructor === String)//true
    

    js new一个对象的过程

      function mon(name) {
                this.name = name
            }
            var son = new mon()
    

    1、创建一个新对象:son
    2、新对象会执行一个[[prototype]]连接

    son.__proto__=mon.prototype
    

    3、对象实例和对象的this会绑定起来
    4、执行对象中的代码

     this.name = name
    

    5、如果函数没有返回值,就是返回新对象

    什么是原型链

    
            function supermarket() {
    
            }
            supermarket.prototype.product = "salks"
    
            console.log(supermarket.prototype)
    
            function shop() {}
    
            shop.prototype = new supermarket()
    
            console.log(shop.prototype)
    
            var person = new shop()
    
            console.log(person.product)
    

    在这里插入图片描述在这里插入图片描述说明:我并没有在shop中定义product,按理说它应该为空,但是我让shop的原型对象指向supermarket的实例,它就会去supermarket中寻找有没有product属性。
    作用:我们可以利用这特性实现类的继承

    展开全文
  • 每当声明一个函数的时候,系统都有一个 prototype (原型)属性,这个属性一个指针,指向一个对象, 而这个对象的用途包含可以由特定类型的所有实例共享的属性和方法,称为原型对象 在声明了一个函数后,这个构造...
  • 对象是一个包含相关数据和方法的集合(通常由一些变量和函数组成,我们称之为对象里面的属性和方法)。 对象有时被称之为关联数组(associative array)了——对象做了字符串到值的映射,而数组做的是数字到值的映射...
  • 前言 总所周知,原型在javascript中十分重要,今天把原型的知识复习了...原型对象是什么 原型的作用 原型对象、对象实例、构造函数的关系 constructor的作用是什么 __proto __的产生(new一个对象的过程) 原型是什么...
  • 每个函数创建后,解析器都会向函数中添加一个属性prototype 这个属性对应一个对象,这...原型对象就相当于一个公共区域,所有同一类的实例都可以访问到这个原型对象 我们可以将对象共有的内容,统一设置到原型对象 ...
  • 什么是原型对象?原型链?

    千次阅读 2019-03-27 22:31:08
    对象是一个包含相关数据和方法的集合(通常由一些变量和函数组成,我们称之为对象里面的属性和方法)。 对象有时被称之为关联数组(associative array)了——对象做了字符串到值的映射,而数组做的是数字到值的映射...
  • js原型对象

    2017-04-01 00:26:00
    原型对象是什么? 在js中,每一个创建的的函数都会有一个prototype属性,这个属性指向一个对象,这个对象就是原型对象 function lla(){} console.log(lla.prototype);  chrome浏览器下的结果:   ...
  • 今天聊一聊原型和原型对象(基础版) 首先说一下什么是原型
  • 1、构造函数、原型对象与实例对象之间的关系; 2、isPrototypeOf()和Object.getPrototypeOf(); 3、实例对象上与原型对象上同名的属性处理; 4、hasOwnProperty()方法和in操作符判断属性来自实例对象本身还是它的原型...
  • 第一次记录自己学习的脚步,我选择了JavaScript中自认为比较熟悉的一小部分来说,诚挚的希望能够得到各位前辈的批评与指正。而对于看到我这篇笔记希望从这...1.原型,原型对象是什么? **1.原型(prototype)是函数的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,015
精华内容 2,006
关键字:

原型对象是什么