JS原型对象操作实例分析


Posted in Javascript onJune 06, 2020

本文实例讲述了JS原型对象操作。分享给大家供大家参考,具体如下:

万物皆对象,函数也同样是对象,是特殊的函数对象

function fn() {}
let a = new fn();
let b = new Function()

console.log(typeof a);  // object 
console.log(typeof b);  // function

打开浏览器,输入fn,会发现fn有一个prototype(原型)属性,这个属性是一个指针,指向原型对象,这个对象包括了特定类型所有共享的属性和方法。
换句话说,prototype对象包含了函数所有的共享属性和方法。

function fn() {}
fn.prototype.a = 18;
fn.prototype.b = "b";
fn.prototype.test = function() {
 console.log(123);  
}
var r = new fn();
console.log(r.a);  // 18

我们直接在函数fn的原型属性上加了两个属性和一个方法,实例化后便可以访问原型中的值。

  • 原型对象有一个constructor属性,它也是一个指针,它指向原来的函数,也就是说,fn.prototype.constructor == fn。
  • 所有的实例都有这个原型对象,因此实例可以访问到原型对象中的属性和方法。

JS原型对象操作实例分析

那么实例怎么搜索变量或者方法的值呢?首先,函数实例会在函数本身上去寻找该变量,如果没有找到,会在原型对象上寻找变量。

function fn() {}
fn.prototype.a = 18;
fn.prototype.b = "b";
fn.prototype.test = function() {
 console.log(123);
}
var a = new fn();
var b = new fn();
b.a = 20
console.log(b.a);  // 20
console.log(a.a);  // 18

创建了两个实例,在b实例上手动添加了一个a属性,在fn的原型对象上也有一个a属性,那么对于b实例会优先访问本身的属性而不是原型上的属性。

参考内容:JavaScript高级程序设计

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
利用WebBrowser彻底解决Web打印问题(包括后台打印)
Jun 22 Javascript
JavaScript实用技巧(一)
Aug 16 Javascript
jquery加载图片时以淡入方式显示的方法
Jan 14 Javascript
学习JavaScript设计模式(封装)
Nov 26 Javascript
教你JS中的运算符乘方、开方及变量格式转换
Aug 09 Javascript
js时间比较 js计算时间差的简单实现方法
Aug 26 Javascript
AngularJS 实现弹性盒子布局的方法
Aug 30 Javascript
原生js中ajax访问的实例详解
Sep 19 Javascript
vue 实现axios拦截、页面跳转和token 验证
Jul 17 Javascript
elementUI多选框反选的实现代码
Apr 03 Javascript
Jquery实现获取子元素的方法分析
Aug 24 jQuery
小程序如何支持使用 async/await详解
Sep 12 Javascript
JS中的继承操作实例总结
Jun 06 #Javascript
ES6 async、await的基本使用方法示例
Jun 06 #Javascript
JS 数组和对象的深拷贝操作示例
Jun 06 #Javascript
ES6 Generator基本使用方法示例
Jun 06 #Javascript
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
Jun 06 #jQuery
ES6 Symbol在对象中的作用实例分析
Jun 06 #Javascript
微信小程序多列表渲染数据开关互不影响的实现
Jun 05 #Javascript
You might like
PHP写MySQL数据 实现代码
2009/06/15 PHP
PHP页面间参数传递的四种方法详解
2013/06/09 PHP
PHP无限分类(树形类)
2013/09/28 PHP
如何修改yii2.0自带的user表为其它的表
2017/08/01 PHP
Laravel如何实现适合Api的异常处理响应格式
2020/06/14 PHP
JavaScript中的原型和继承详解(图文)
2014/07/18 Javascript
javascript遇到html5的一些表单属性
2015/07/05 Javascript
javascript下使用Promise封装FileReader
2016/02/19 Javascript
利用AJAX实现WordPress中的文章列表及评论的分页功能
2016/05/17 Javascript
js实现点击图片自动提交action的简单方法
2016/10/16 Javascript
基于AngularJS前端云组件最佳实践
2016/10/20 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(1)
2017/02/20 Javascript
自制简易打赏功能的实例
2017/09/02 Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
2019/04/24 Javascript
前端使用crypto.js进行加密的函数代码
2020/08/16 Javascript
Python爬虫DOTA排行榜爬取实例(分享)
2017/06/13 Python
python爬虫使用cookie登录详解
2017/12/27 Python
Django权限机制实现代码详解
2018/02/05 Python
Python处理中文标点符号大集合
2018/05/14 Python
python 随机打乱 图片和对应的标签方法
2018/12/14 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
Python lambda表达式filter、map、reduce函数用法解析
2019/09/11 Python
python怎么删除缓存文件
2020/07/19 Python
Java byte数组操纵方式代码实例解析
2020/07/22 Python
瑞典时尚服装购物网站:Miinto.se
2017/10/30 全球购物
西班牙拥有最佳品牌的动物商店:Animalear.com
2018/01/05 全球购物
宝拉珍选官方旗舰店:2%水杨酸精华液,收缩毛孔粗大和祛痘
2018/07/01 全球购物
简短的公司员工自我评价分享
2013/11/13 职场文书
社区助残日活动总结
2014/08/29 职场文书
计划生育诚信协议书
2014/11/02 职场文书
2014财务年终工作总结
2014/12/08 职场文书
个人汇报材料范文
2014/12/30 职场文书
2015年艾滋病宣传活动总结
2015/03/27 职场文书
2015年幼儿园教育教学工作总结
2015/05/25 职场文书
美容院员工规章制度
2015/08/05 职场文书
告诉你创业计划书的8个实用技巧
2019/07/12 职场文书