javascript - 以下语句的函数将存储在该函数的原型中的位置
问题描述
function b(){
this.var = 20;
ele = 10;
}
let a = new b()
因为我看不到 ele 和 this.var 都没有存储在 b.prototype 构造函数中。
解决方案
在 Javascript 中声明变量时必须小心谨慎。您当前的代码创建了一个全局变量ele
(它作为 window 对象的属性添加),因为您没有使用 等声明var
它let
。
例如:
function b() {
this.var = 20;
ele = 10;
}
let a = new b()
console.log("ele is visible outside: ", ele)
console.log("ele is same as window.ele: ", ele === window.ele)
您的主要问题的答案是否定的,实例变量不存储在函数原型中。调用new b()
将创建一个新对象,该对象具有您使用分配的属性this
。该对象通过原型继承链接到函数的原型:
function b() {
this.var = 20;
}
let a = new b()
console.log("b.prototype.var?", b.prototype.var)
console.log("a.var?", a.var)
由于原型链接,如果您将某些东西分配给b
' 的原型,它将可用于实例b
(只要它们还没有自己的相同属性)。
function b() {
this.var = 20;
}
b.prototype.testArray = [1, 2, 3]
let a = new b()
let c = new b()
console.log(a.test, c.test)
console.log("They point to the same object?", a.test === c.test)
推荐阅读
- c - 为了计算一个整数的阶乘,比如说,k,我必须写一个语句 kfact = kfact *i。我不明白为什么
- python - 在 python 中使用类 c 数组
- python - 如何将 cookie 列表导入请求?
- audio - 我需要做什么才能在运行 debian 的 beaglebone 上设置 USB 音频小工具 i/o?
- python - 替换列表列表中的每个第 n 个元素
- python - 在上传到 pypi 的包中,不检查是否已经安装了包要求,尽管从 github 安装了相同的代码
- sql - 在 symfony 3 中将 sql 查询转换为 dql 查询
- java - 测试对唯一标识符的查询是否最多返回一个结果
- python-3.x - Numpy矩阵求幂给出否定结果
- c# - 如何在运行时在浏览器中运行代码