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实现html页面 div 假分页有原理有代码
Sep 06 Javascript
JQuery右键菜单插件ContextMenu使用指南
Dec 19 Javascript
js实现点击链接后窗口缩小并居中的方法
Mar 02 Javascript
Angularjs制作简单的路由功能demo
Apr 14 Javascript
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
Jul 18 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
Sep 05 Javascript
jquery实现上传文件大小类型的验证例子(推荐)
Jun 25 Javascript
bootstrap fileinput 插件使用项目总结(经验)
Feb 22 Javascript
BootStrap中jQuery插件Carousel实现轮播广告效果
Mar 27 jQuery
基于AngularJs select绑定数字类型的问题
Oct 08 Javascript
JS实现马赛克图片效果完整示例
Apr 13 Javascript
解决axios post 后端无法接收数据的问题
Oct 29 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仿QQ验证码的实例分析
2013/07/01 PHP
php调用C代码的实现方法
2014/03/11 PHP
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
2014/06/12 PHP
php二维数组合并及去重复的方法
2015/03/04 PHP
php创建类并调用的实例方法
2019/09/25 PHP
JavaScript delete 属性的使用
2009/10/08 Javascript
js trim函数 去空格函数与正则集锦
2009/11/20 Javascript
使用CSS和jQuery模拟select并附提交后取得数据的代码
2013/10/18 Javascript
JS去掉第一个字符和最后一个字符的实现代码
2014/02/20 Javascript
JS实现点击按钮后框架内载入不同网页的方法
2015/05/05 Javascript
jQuery实现不断闪烁文字的方法
2015/05/15 Javascript
javascript中Date format(js日期格式化)方法小结
2015/12/17 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
2016/11/24 Javascript
DWR3 访问WEB元素的两种方法实例详解
2017/01/03 Javascript
详解JS: reduce方法实现 webpack多文件入口
2017/02/14 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
深入理解js 中async 函数的含义和用法
2018/05/13 Javascript
记录一篇关于redux-saga的基本使用过程
2018/08/18 Javascript
JS JQuery获取data-*属性值方法解析
2020/09/01 jQuery
js+css3实现简单时钟特效
2020/09/13 Javascript
Pyramid添加Middleware的方法实例
2013/11/27 Python
python解析html开发库pyquery使用方法
2014/02/07 Python
Python的内存泄漏及gc模块的使用分析
2014/07/16 Python
flask框架使用orm连接数据库的方法示例
2018/07/16 Python
Python中*args和**kwargs的区别详解
2019/09/17 Python
Python3变量与基本数据类型用法实例分析
2020/02/14 Python
Python Django搭建网站流程图解
2020/06/13 Python
opencv 图像滤波(均值,方框,高斯,中值)
2020/07/08 Python
xml有哪些解析技术?区别是什么
2016/04/26 面试题
党员违纪检讨书
2014/02/18 职场文书
总经理助理的职责
2014/03/14 职场文书
厨房领班竞聘演讲稿
2014/04/23 职场文书
2014年基建工作总结
2014/12/12 职场文书
Python WSGI 规范简介
2021/04/11 Python
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
2021/04/12 Python