2021-10-08原型题目

本文深入探讨了JavaScript中的构造函数、原型及原型链。通过示例解析了`Person`构造函数及其原型对象的属性和方法,如`getName`。还详细解释了`__proto__`、`constructor`、`instanceof`等关键概念,并展示了它们在对象实例`p`上的应用。同时,对比了静态方法与原型方法的区别,强调了`this`在不同上下文中的指向问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 var name = 'oop '

        var Person = function (options) {
            this.name = options.name
        }//构造函数person

        Person.prototype.name = 'Person'//构造函数person创建的实例原型的name属性
        Person.prototype.getName = function () {
            return this.name
        }//构造函数person创建的实例原型的getName方法

        Person.getName = function () {
            return this.name;
        }//构造函数的静态方法

        var p = new Person({ name: 'inke' })//构造函数person创建的实例对象P

        console.log(p.constructor === Person) // true
        console.log(p instanceof Person) // true
        console.log(p.__proto__ === Person.prototype) // true  每个对象都有一个__proto__属性 指向对象的原型   函数的prototype属性指向一个对象,这个对象正是调用该构造函数创建的实例原型

        console.log(p.hasOwnProperty('name')) // true  hasOwnProperty只能读取自己身上的属性
        console.log(p.name) //inke.如果删除52行里name 则首先找到构造函数中的name 值为undefined
        console.log(p.hasOwnProperty('getName')) // false  

        var getName = p.getName

        console.log(getName === Person.getName) // ? false

        console.log(getName()) //  oop  this此时指向全局

        console.log(Person.prototype.getName()) // ? 'Person'
        console.log(p.getName())  //  'inke' 如果删除52行 则首先找到构造函数中的person 值为undefined
        console.log(Person.getName())//  Person //函数的getName里的return this.name;返回函数的name属性 --函数名person
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值