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中删除指定数组中指定的元素的代码
Feb 12 Javascript
javascript数组去重3种方法的性能测试与比较
Mar 26 Javascript
如何阻止复制剪切和粘贴事件为了表单内容的安全
May 23 Javascript
js中的时间转换—毫秒转换成日期时间的示例代码
Jan 26 Javascript
轻松使用jQuery双向select控件Bootstrap Dual Listbox
Dec 13 Javascript
前端实现文件的断点续传(前端文件提交+后端PHP文件接收)
Nov 04 Javascript
Vue + Vue-router 同名路由切换数据不更新的方法
Nov 20 Javascript
基于Vue2的独立构建与运行时构建的差别(详解)
Dec 06 Javascript
JS实现延迟隐藏功能的方法(类似QQ头像鼠标放上展示信息)
Dec 28 Javascript
cropper js基于vue的图片裁剪上传功能的实现代码
Mar 01 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
Dec 25 Javascript
vue+AI智能机器人回复功能实现
Jul 16 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 xml 入门学习资料
2011/01/01 PHP
PHP限制页面只能在微信自带浏览器访问的代码
2014/01/15 PHP
PHP实现正则表达式分组捕获操作示例
2018/02/03 PHP
Using the TextRange Object
2006/10/14 Javascript
javascript函数库-集合框架
2007/04/27 Javascript
js jquery做的图片连续滚动代码
2008/01/06 Javascript
IE6下js通过css隐藏select的一个bug
2010/08/16 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
2013/03/29 Javascript
Struts2的s:radio标签使用及用jquery添加change事件
2013/04/08 Javascript
基于jquery的simpleValidate简易验证插件
2014/01/31 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
2015/02/17 Javascript
JS+CSS实现仿msn风格选项卡效果代码
2015/10/22 Javascript
浅析JavaScript 调试方法和技巧
2015/10/22 Javascript
JavaScript基础——使用Canvas绘图
2016/11/02 Javascript
JavaScript的变量声明提升问题浅析(Hoisting)
2016/11/30 Javascript
React Native 真机断点调试+跨域资源加载出错问题的解决方法
2018/01/18 Javascript
jQuery实现使用sort方法对json数据排序的方法
2018/04/17 jQuery
vue异步加载高德地图的实现
2018/06/19 Javascript
使用Vue父子组件通信实现todolist的功能示例代码
2019/04/11 Javascript
详解babel升级到7.X采坑总结
2019/05/12 Javascript
JS如何实现动态添加的元素绑定事件
2019/11/12 Javascript
原生JS实现萤火虫效果
2020/03/07 Javascript
js中位数不足自动补位扩展padLeft、padRight实现代码
2020/04/06 Javascript
Python中实现两个字典(dict)合并的方法
2014/09/23 Python
Python进程间通信用法实例
2015/06/04 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
Python中的引用知识点总结
2019/05/20 Python
python3 pathlib库Path类方法总结
2019/12/26 Python
python使用ctypes库调用DLL动态链接库
2020/10/22 Python
HTML5 本地存储之如果没有数据库究竟会怎样
2013/04/25 HTML / CSS
针对HTML5的Web Worker使用攻略
2015/07/12 HTML / CSS
学位证书委托书
2014/09/30 职场文书
社区工作者个人总结
2015/02/28 职场文书
结婚纪念日感言
2015/08/01 职场文书
导游词之江苏同里古镇
2019/11/18 职场文书
Unicode中的CJK(中日韩统一表意文字)字符小结
2021/12/06 HTML / CSS