工厂方法创建对象

原形函数之prototype

当函数以构造函数形式调用时,他创建的对象都会有个隐藏属性我们称为原形函数,我们可以用__proto__访问该构造的原形对象

          function ff (){

         }

         var c = new ff()

//prototype是函数的属性值,而__proto__是对象的属性值

         console.log(ff.prototype== c.__proto__) //True

原形对象相当于一个公共区域,所有同一个类的实例都可以访问该原形对象,所以可以将对象中共有的内容存放到原形对象中去,当我们访问一个对象的属性或方法时候,会优先在自身找,如果没找到则去原形对象中寻找,找到则调用,创建构造函数时,将共有的属性或者方法统一添加到构造函数中的原形对象里去,不会影响全局作用域,如果自身方法或者属性需要覆盖,可以在对象中添加相同的方法和属性利用优先调用自身方法和属性的原理进行覆盖

         function fun(name){

//            this.name = "alex"//原先构造函数写法

//            this.age = 18

//            sayname = function()

              fun.prototype.name = name

              fun.prototype.nature = function(){

                       alert(name + 111111)

              }

         }

        

         var a = new fun("嘻嘻嘻")

         console.log(a.name)

         a.nature()

 

in检查对象中是否含有某个属性时,如果对象中没有但是原形中有也会返回true,如果要检查方法中对象中本身是否含有该属性则用hasOwnproperty()这个方法

function fun(){

//            this.name = "alex"

//            this.age = 18

//            sayname = function()

         }

              fun.prototype.name = "原形名字"

              fun.prototype.nature = function(){

              alert(111111)

              }

         var a = new fun()

//       console.log(a.name)

         a.nature()

         console.log("name" in a) //true

         console.log(a.hasOwnProperty("name"))  //false

转载于:https://www.cnblogs.com/Young-shi/p/10453528.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值