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中根据属性或属性值获得元素(6种情况获取方法)
Jan 17 Javascript
javascript date格式化示例
Sep 25 Javascript
setinterval()与clearInterval()JS函数的调用方法
Jan 21 Javascript
js实现宇宙星空背景效果的方法
Mar 03 Javascript
jQuery仿gmail实现fixed布局的方法
May 27 Javascript
javascript中对变量类型的判断方法
Aug 09 Javascript
Bootstrap每天必学之缩略图与警示窗
Nov 29 Javascript
js格式化时间的方法
Dec 18 Javascript
js学习总结之DOM2兼容处理this问题的解决方法
Jul 27 Javascript
通过vue-cli3构建一个SSR应用程序的方法
Sep 13 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
Jan 21 Javascript
JavaScript写个贪吃蛇小游戏(超详细)
Mar 17 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中json_encode()和json_decode()
2014/05/25 PHP
php示例详解Constructor Prototype Pattern 原型模式
2015/10/15 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
2019/12/12 PHP
jquery-tips悬浮提示插件分享
2015/07/31 Javascript
javascript实现超炫的向上滑行菜单实例
2015/08/03 Javascript
JavaScript数据类型学习笔记
2016/01/25 Javascript
javascript瀑布流式图片懒加载实例解析与优化
2016/02/23 Javascript
Bootstrap 组件之按钮(二)
2016/05/11 Javascript
JQuery为元素添加样式的实现方法
2016/07/20 Javascript
EditPlus中的正则表达式 实战(4)
2016/12/15 Javascript
Vue.js结合Ueditor富文本编辑器的实例代码
2017/07/11 Javascript
NodeJS实现视频转码的示例代码
2017/11/18 NodeJs
10行原生JS实现文字无缝滚动(超简单)
2018/01/02 Javascript
使用ngrok+express解决本地环境中微信接口调试问题
2018/02/26 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
JS简单生成由字母数字组合随机字符串示例
2018/05/25 Javascript
Vue resource三种请求格式和万能测试地址
2018/09/26 Javascript
详解微信小程序之一键复制到剪切板
2019/04/24 Javascript
在antd Form表单中select设置初始值操作
2020/11/02 Javascript
Vertx基于EventBus发送接受自定义对象
2020/11/16 Javascript
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
解决django后台样式丢失,css资源加载失败的问题
2019/06/11 Python
python解析命令行参数的三种方法详解
2019/11/29 Python
Python类中self参数用法详解
2020/02/13 Python
Sperry澳大利亚官网:源自美国帆船鞋创始品牌
2019/07/29 全球购物
机械制造毕业生求职信
2014/03/03 职场文书
租房协议书
2014/04/10 职场文书
2014年班主任自我评价范文
2014/04/23 职场文书
给公司的建议书范文
2014/05/13 职场文书
党的群众路线领导班子整改方案
2014/09/27 职场文书
酒会邀请函
2015/01/31 职场文书
防卫过当辩护词
2015/05/21 职场文书
HTML+CSS 实现顶部导航栏菜单制作
2021/06/03 HTML / CSS
django 认证类配置实现
2021/11/11 Python
JavaScript异步操作中串行和并行
2021/11/20 Javascript
MySQL实现配置主从复制项目实践
2022/03/31 MySQL