JavaScript原型的理解

function protoTest() {//原型链验证
    /*
        函数与对象的关系:函数是对象,对象都是由函数创建的
        原型的类别:显式原型prototype是函数独有的,隐式原型__proto__是所有对象都有的
        原型:一个函数可以看成一个类,原型是所有类都有的一个属性
        原型链:每一个对象的__proto__指向构造这个对象的函数的prototype
        Function是顶层构造器,创建了所有对象,包括他自己
        Object是顶层对象,所有对象都继承Object的原型,Object也是被Function构造出来的
    */

    //定义一个类
    function User(name, age, skill, msg) {
        this.name = name;
        this.age = age;
        this.skill = skill
        this.speak = function () {
            console.log(msg)
        }
    }

    //定义一个对象
    var nahida = new User('Nahida', 500, {e: '手牵手', q: '此即,智慧之殿堂'}, '小心头顶上长出蘑菇哦')
    console.log('对象的原型指向构造函数的prototype', nahida.__proto__ === User.prototype)//true,规定的
    console.log('对象方法的隐式原型指向Function的prototype', nahida.speak.__proto__ === Function.prototype)//true,对象的方法也是函数,是由Function创建的
    console.log('对象属性的原型指向属性类型的构造函数的prototype', nahida.name.__proto__ === String.prototype)//true,对象的属性也是由相应的构造函数创建的
    console.log('对象属性的原型指向属性类型的构造函数的prototype', nahida.age.__proto__ === Number.prototype)//true,对象的属性也是由相应的构造函数创建的
    console.log('对象属性的原型指向属性类型的构造函数的prototype', nahida.skill.__proto__ === Object.prototype)//true,对象的属性也是由相应的构造函数创建的
    console.log('')
    console.log('函数的隐式原型指向Function的prototype', User.__proto__ === Function.prototype)//true,函数是对象,是由Function创建的
    console.log('函数的显式原型是独立的对象', User.prototype === Function.prototype)//false,就是个普通对象
    console.log('函数的显式原型的原型指向Object的prototype', User.prototype.__proto__ === Object.prototype)//true,是个普通对象,构造函数是Object
    console.log('')
    console.log('Function的隐式原型指向Function的prototype', Function.__proto__ === Function.prototype)//true,Function是由Function创建的
    console.log('Function的显式原型的隐式原型指向Object的prototype', Function.prototype.__proto__ === Object.prototype)//true,是个普通对象
    console.log('')
    console.log('Object的隐式原型指向Function的prototype', Object.__proto__ === Function.prototype)//true,Object也是由Function创建的
    console.log('Object的显式原型的隐式原型为null', Object.prototype.__proto__ === null)//true,特殊要求
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值