博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript prototype 疑惑
阅读量:5861 次
发布时间:2019-06-19

本文共 1192 字,大约阅读时间需要 3 分钟。

看了《JavaScript高级程序设计》中关于对象的介绍,记录一下对于其中有些地方的疑惑。

  1. 使用构造函数创建对象时,prototype中如果定义一个属性指向函数,在函数中引用this,为什么this是指向构造函数而不是prototype对象?

试验:

function SuperType() {    this.property = 'value in SuperType'    this.obj = {        testThis: function() {            console.log(this)            console.log(this.testValue)            console.log(this.property)        },        testValue: 'value in SuperType.obj',    }}SuperType.prototype.getSuperValue = function() {    console.log(this)    return this.property}const test = new SuperType()test.obj.testThis()// output:// { testThis: [Function: testThis], testValue: 'test' }// value in SuperType.obj// undefinedr = test.getSuperValue()console.log(r)// output:// SuperType {//  property: true,//  obj: { testThis: [Function: testThis], testValue: 'value in SuperType.obj' }// }// value in SuperType

按照书上的讲解,test实例的结构应该是如下的(伪代码):

person = {    __proto__: {        constructor: SuperType,        getSuperValue: function() { ... },    },    obj: {        testThis: function() { ... },        testValue: 'value in SuperType.obj',    },    property: 'value in SuperType',}

__proto__既然和obj同一层级的,那getSuperValue应该就和testValue是有同样的表现才对呀,为什么getSuperValue可以读取到property的值呢?

转载地址:http://jkgjx.baihongyu.com/

你可能感兴趣的文章
有助于提高"锁"性能的几点建议
查看>>
Hibernate入门到精通-关系映射一对多
查看>>
将solr发布到Tomcat上
查看>>
解压zip包(zip4j)
查看>>
汽车租赁系统((SSH+MYSQL+JSP))
查看>>
12.17 Nginx负载均衡 12.18 ssl原理 12.19 生成ssl密钥对 12.20 Nginx配置ssl
查看>>
高阶特性
查看>>
MongoDB最简单的入门教程之三 使用Java代码往MongoDB里插入数据
查看>>
如何处理Docker的错误消息request canceled:Docker代理问题
查看>>
react(一)基础环境搭建
查看>>
HanLP自然语言处理技术介绍说明
查看>>
集群介绍&keepalived介绍&用keepalived配置高可用集群
查看>>
单颗GPU计算能力太多、太贵?阿里云发布云上首个轻量级GPU实例
查看>>
关于sql server2012备份还原出现的2个介质问题的解决方法?
查看>>
CentOS 7 单用户和救援模式
查看>>
C语言/C++编程学习:和QT零距离接触的意义
查看>>
python rtree包查找三维空间下的最近设备
查看>>
京东推荐系统架构揭秘:大数据时代下的智能化改造
查看>>
BCHD开发出可替代BCH全节点的公开API——gRPC
查看>>
SpringCloud的服务注册与发现Eureka
查看>>