官方函数 原型链互联Fun Obj

Object 是一个函数

Function也是一个函数  function是一个关键字

他们的数据类型都是function:

console.log(typeof Object);//"function"

console.log(typeof Function);//"function"

函数有三种写法

        1.声明式:写一个函数运行脚本时  系统预编译时 帮我们创建这个函数对象

        2.定义式:创建函数的语法糖 直接生成一个函数数据(对象) 被标识引用

        var a=function(){}

        3.标准的创建一个函数对象

        var f1=new Function("var a=20;console.log(a)")

         f1()

原型添加对象方式:

prototype.成员名=属性内容    //对象直接添加成员

prototype={成员名:属性}  //添加对象在添加成员

        function fn(){
            this.a=100
        }
        var b=[1,2,3,4]
        fn.prototype.life=b//原型对象直接添加成员  不能直接fn.prototype=b   
        fn.prototype={asd:123}//原型对象添加对象再添加成员   
        fn.prototype=[1,2,3]//

官方函数的原型中添加的对象共属于他创建的对象的原型

        var obj=new Function()
        var obj1=new Function()
        Function.prototype.life=123
        console.log(obj.life==obj1.life);

   对象和函数的关系 (常常出现在笔试题的选择题中)

  Object.prototype.life = 1 //以后用Object创建的对象的原型对象有life属性为1

关于函数的name属性:

由以下代码可知:

直接function fn() 创建函数 函数名是name=fn

var fn=new Fun('this.name="karen"')此种创建方法没有name属性

        function fn(){    //此方法创建的函数名是name fn
             this.name="karen"
         }
        var fn = new Function('this.name="karen"') //这个创建了一个方法  这种方式创建的函数n 
        ame不是fn

关于对象和函数的关系 他们的官方函数:

由以下函数可知:

1. var fn = new Function('this.name="karen"')   此方法创建函数fn不是Object类型而是function属性

他的原型关联Function.prototype的内容

2. var f1 = new fn()  此时的f1才是Object属性  它的原型关联了Object.prototype的内容

        Object.prototype.life = 1 //以后用Object创建的对象的原型对象有life属性为1
        Function.prototype.life = 2 //方法
        // function fn(){    //此方法创建的函数名是name fn
        //     this.name="karen"
        // }
        var fn = new Function('this.name="karen"') //这个创建了一个方法  这种方式创建的函数 
        name不是fn
        var f1 = new fn() //这是创建一个对象
        console.log(typeof (fn));
        console.log(f1.name, f1.life); //f1指向Object.prototype.life=1
        console.log(fn.life, fn.name); //fn指向Function.prototype.life=2  

由以下代码可知:

1.Object.prototype添加的原型 func函数可以访问函数创建的对象也可以访问

2.Function.prototype添加的原型  只有func函数可以访问  函数创建的对象不能访问

         Object.prototype.life = 2 //以后用Object创建的对象的原型对象有life属性为1  fn(函数)和f1(对象)都可以访问到Object的原型
        // Function.prototype.life = 1 //以后用function创建的对象的原型对象有life属性为1

        function fn() { //此方法创建的函数名是name fn
            this.name = "karen"
        }
        var f1 = new fn() //这是创建一个对象
        console.log(f1.life);//1
        console.log(fn.life);//1   函数可以访问到对象的prototye  Function.prototye=函数的原型对象=>原型对象=》 ==》Object.peototye

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值