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 相关文章推荐
自己封装的javascript事件队列函数版
Jun 12 Javascript
js格式化时间小结
Nov 03 Javascript
2014 HTML5/CSS3热门动画特效TOP10
Dec 07 Javascript
jQuery中toggleClass()方法用法实例
Jan 05 Javascript
jquery插件jquery.nicescroll实现图片无滚动条左右拖拽的方法
Aug 10 Javascript
javascript创建对象、对象继承的实用方式详解
Mar 08 Javascript
JavaScript简单下拉菜单特效
Sep 13 Javascript
JS实现物体带缓冲的间歇运动效果示例
Dec 22 Javascript
基于Node.js的WebSocket通信实现
Mar 11 Javascript
JavaScript中的普通函数和箭头函数的区别和用法详解
Mar 21 Javascript
Angular简单验证功能示例
Dec 22 Javascript
KnockoutJS数组比较算法实例详解
Nov 25 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编程语言开发动态WAP页面
2006/10/09 PHP
ajax+php打造进度条代码[readyState各状态说明]
2010/04/12 PHP
php中jQuery插件autocomplate的简单使用笔记
2012/06/14 PHP
Zend Framework教程之配置文件application.ini解析
2016/03/10 PHP
PHP实现的自定义图像居中裁剪函数示例【测试可用】
2017/08/11 PHP
PHP的curl函数的用法总结
2019/02/14 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
javascript 日历提醒系统( 兼容所有浏览器 )
2009/04/07 Javascript
IE和Firefox下event事件杂谈
2009/12/18 Javascript
javascript 星级评分效果(手写)
2012/12/24 Javascript
javascript中call apply 的应用场景
2015/04/16 Javascript
JS实现先显示大图后自动收起显示小图的广告代码
2015/09/04 Javascript
详解JavaScript的变量和数据类型
2015/11/27 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
2015/12/14 Javascript
浅析Bootstrap表格的使用
2016/06/23 Javascript
原生js实现图片放大缩小计时器效果
2017/01/20 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
JS中LocalStorage与SessionStorage五种循序渐进的使用方法
2017/07/12 Javascript
详解在Angular4中使用ng2-baidu-map的方法
2019/06/19 Javascript
bootstrap实现tab选项卡切换
2020/08/09 Javascript
[01:32]DOTA2 2015国际邀请赛中国区预选赛第四日战报
2015/05/29 DOTA
初步剖析C语言编程中的结构体
2016/01/16 Python
python多线程方式执行多个bat代码
2016/06/07 Python
python opencv之SURF算法示例
2018/02/24 Python
python 接口返回的json字符串实例
2018/03/27 Python
Python Selenium 之关闭窗口close与quit的方法
2019/02/13 Python
python里的单引号和双引号的有什么作用
2020/06/17 Python
python类共享变量操作
2020/09/03 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
2020/11/10 Python
html5 touch事件实现页面上下滑动效果【附代码】
2016/03/10 HTML / CSS
美国家居装饰店:Z Gallerie
2020/12/28 全球购物
法制宣传口号
2014/06/16 职场文书
2019如何书写演讲稿?
2019/07/01 职场文书
python编写五子棋游戏
2021/05/25 Python
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle