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 相关文章推荐
学习jquery之一
Apr 27 Javascript
6款经典实用的jQuery小插件及源码(对话框/提示工具等等)
Feb 04 Javascript
JS实现div居中示例
Apr 17 Javascript
原生JavaScript实现合并多个数组示例
Sep 21 Javascript
jQuery中outerHeight()方法用法实例
Jan 19 Javascript
jQuery实现根据类型自动显示和隐藏表单
Mar 18 Javascript
基于BootStrap Metronic开发框架经验小结【三】下拉列表Select2插件的使用
May 12 Javascript
如何防止INPUT按回车自动提交表单FORM
Dec 06 Javascript
基于AngularJS的拖拽文件上传的实例代码
Jul 15 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
May 14 Javascript
细说webpack6 Babel的使用详解
Sep 26 Javascript
在Vue.js中使用TypeScript的方法
Mar 19 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中使用preg_replace函数匹配图片并加上链接的方法
2013/02/06 PHP
PHP URL参数获取方式的四种例子
2014/02/28 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
2019/09/30 PHP
Laravel框架集合用法实例浅析
2020/05/14 PHP
javascript管中窥豹 形参与实参浅析
2011/12/17 Javascript
jquery 滚动条事件简单实例
2013/07/12 Javascript
Knockout text绑定DOM的使用方法
2013/11/15 Javascript
基于Jquery代码实现支持PC端手机端幻灯片代码
2015/11/17 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
JS实现json的序列化和反序列化功能示例
2017/06/13 Javascript
vue用addRoutes实现动态路由的示例
2017/09/15 Javascript
vue中路由参数传递可能会遇到的坑
2017/12/07 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
2017/12/20 Javascript
JS实现去除数组中重复json的方法示例
2017/12/21 Javascript
JavaScript设计模式之责任链模式实例分析
2019/01/16 Javascript
[15:28]DOTA2 HEROS教学视频教你分分钟做大人-剧毒术士
2014/06/13 DOTA
[02:26]2016国际邀请赛8月3日开战 中国军团出征西雅图
2016/08/02 DOTA
[58:59]完美世界DOTA2联赛PWL S3 access vs CPG 第一场 12.13
2020/12/16 DOTA
python检测lvs real server状态
2014/01/22 Python
Python栈算法的实现与简单应用示例
2017/11/01 Python
对Tensorflow中权值和feature map的可视化详解
2018/06/14 Python
Python反爬虫技术之防止IP地址被封杀的讲解
2019/01/09 Python
Python:Numpy 求平均向量的实例
2019/06/29 Python
python requests.get带header
2020/05/05 Python
解决Django Haystack全文检索为空的问题
2020/05/19 Python
H5 canvas中width、height和style的宽高区别详解
2018/11/02 HTML / CSS
花园仓库建筑:Garden Buildings Direct
2018/02/16 全球购物
捷克钓鱼用品网上商店:Parys.cz
2018/06/15 全球购物
六个一活动实施方案
2014/03/21 职场文书
协议书的格式
2014/04/23 职场文书
代办委托书怎么写
2014/08/01 职场文书
万能检讨书2000字
2014/10/17 职场文书
2014年统战工作总结
2014/12/09 职场文书
2016小学优秀教师先进事迹材料
2016/02/26 职场文书
Python Pygame实战在打砖块游戏的实现
2022/03/17 Python
CSS 鼠标点击拖拽效果的实现代码
2022/12/24 HTML / CSS