| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> Javascript中的prototype能直接在构造函数里赋值吗? -> 正文阅读 |
|
[JavaScript知识库]Javascript中的prototype能直接在构造函数里赋值吗? |
现在先看代码:
第一个实例对象target_first在自身和原型对象里都找不到name属性,而第二个实例对象target_second能找到name属性。 接下来我们来看一下实例对象target_first和target_second的__proto__属性:
输出结果是: 上述输出结果说明:实例对象target_first和target_second的属性__proto__指向对象都不一样,实例对象target_second的属性__proto__指向有属性name的对象。 下面我们再输出构造函数Target的原型对象Target.prototype来看看:
输出结果是: 上述输出结果说明:在第一次调用构造函数时,虽然构造函数对象Target的属性prototype指向含有属性name的对象,但是this.__proto__( this指向创建出来的对象)指向的是原型对象Target.prototype,而不是含有属性name的对象,而原型对象Target.prototype本身不含有name属性,所以实例对象target_first找不到name属性,而实例对象target_second的属性__proto__指向含有属性name的对象,则可以在实例对象target_second找到name属性。 想要搞清楚为什么这样子,还是要理解new一个对象的过程,于是我到网上查询一番,大概了解到new一个对象的过程是这个样子: 构造函数:function Test(){} 1、创建一个空对象 var obj = {}; 2、设置新对象的constructor属性为构造函数名称,设置新对象的__proto__属性指向构造函数的属性prototype指向的原型对象 obj.__proto__=Test.prototype 3、使用新对象调用函数,函数中this指向新实例对象 Test.call(obj)? ? ?//调用构造函数Test() 4、将初始化完毕新对象地址,保存到等号左边的变量中 通过了解到new一个对象的过程,我大概可以总结出原因,就是__proto__这个属性在调用构造函数之前,就已经指向原型对象,而在构造函数里又没有改变__proto__的指向,所以根据原型链查找方法(target => Target.prototype => Object.prototype)始终在?实例对象target、原型对象Target.prototype和Object.prototype找name属性,所以自然就找不到了。 我的解决方法: 第一种方法:
第二种方法:
第三种方法:
|
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 13:23:22- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |