(一)JS三座大山——原型与原型链,闭包和异步之原型

1.函数prototype属性(图)

a)每个函数(内置函数,构造函数)都有prototype属性,它默认指向一个空的object对象(即:原型对象)

下面我们举例来看一下:

内置函数(内置函数上有很多自带的方法):

定义好Date函数后,像Date的原型中添加了很多方法

构造函数(默认指向一个空的Object对象,空是指:没有我们自己的)

b)原型对象object中有一个constructor属性,它指向函数对象

我们看一下函数的prototype属性,假设函数名type 它有一个属性叫做prototype,prototype指向type的原型对象,原型对象里面有一个constructor属性,constructor属性又指向type。构造函数type与它的原型对象相互引用。

相互引用: A里面有一个属性可以找到B,B里面有一个属性可以找到A

2.给原型对象object添加属性(一般指方法)====》给实例对象使用,实例对象可以访问

作用:函数的所有实例对象自动拥有原型中的属性(方法)

附录:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>原型</title>
    </head>
    <body>
        <!-- prototype是函数属性,任何函数都有此属性(内置函数,构造函数)
         函数的prototype属性默认指向一个空的object对象(原型对象)
         原型对象(object)中有一个constructor属性,它指向函数对象
         -->
         <script type="text/javascript">
             // 内置函数
             /**Date是Object类型的实例对象
              * Object实例对象里面提供了很多方法,
              * 这些方法是通过new出来给实例对象使用
              * */ 
              
             console.log(Date.prototype,typeof(Date.prototype));//Object  "object"
            // 原型对象中有一个属性constructor,它指向函数对象
            // Date中的原型Date.prototype  
            // Date.prototype.constructor原型对象
            // constructor引用变量属性
            console.log(Date.prototype.constructor===Date);//true

             // 构造函数
             function fun(){}//空的构造函数
              // console.log(fun.prototype);
             //Object对象空对象(空是指没有我们自己写的属性)
             //给构造函数添加方法  JS 可以动态添加属性
             fun.prototype.test = function(){
                 console.log('test()')
             }
             //给原型添加属性,怎么使用?
            // fun.prototype.test()//如此使用没有意义
              console.log(fun.prototype);
              // 判断constructor是否指向函数对象
              console.log(fun.prototype.constructor===fun)//true
              
              // 创建实例  调用test()
              var fun = new fun();
              fun.test();
              
         </script>
    </body>
</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值