09_JS原型对象

原型对象

在构造函数中,同一类相同的方法可以直接写在构造函数里,但这样每实例化一个对象都会产生一个新的该方法,但其实这个方法都是一样的,这样会浪费大量空间,另外,可以将相同的方法写在构造函数外,这样虽然解决了空间浪费问题,但在全局作用域设置变量污染了命名空间,也不安全。这时可以将相同的属性和方法放在原型对象中。


  • 在JS中,我们所创建的每一个函数,解析器都会为他添加一个prototype属性,这个属性对应一个对象,就是原型对象
  • 对于普通函数来说,prototype属性没有任何作用,只有当函数以构造函数的形式调用时,他所创建的对象都会有一个隐藏属性指向原型对象,可以使用__proto__访问
function fun(){console.log(this);
};var sun1 = new fun();
console.log(fun.prototype)
console.log(sun1.__proto__)// 返回 true,说明由fun实例化来的fun1中的__proto__指向fun的原型对象
console.log(fun.prototype == sun1.__proto__)

[外链图片转存失败(img-T8P2zSX1-1562224188995)(image/yuanxing.jpg)]

当我们访问一个对象的属性或方法时,会现在自身找,找不到就去原型中找,找不到就去原型的原型中找,直到找到Object,Object是所有对象的原型

function Car(){this.type = "car";this.print = print;
}Car.prototype.print = function(){console.log(this.name +" : " + this.parse);
}
  • 可以使用hasownproperty()检查自身是否有某个属性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457646.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[改善Java代码]非稳定排序推荐使用List

我们知道Set与List的最大区别就是Set中的元素不可以重复(这个重复指的equals方法的返回值相等),其他方面则没有太大的区别了,在Set的实现类中有一个比较常用的类需要了解一下:TreeSet,该类实现了类默认排序…

如何访问另一台电脑的共享文件夹_如何远程控制另一台电脑

在工作中,我们时常需要远程控制一下另一台电脑,如果这两台计算机在局域网内可以通过远程桌面轻松实现,如果这两台计算机不在局域网内则通常需要借助第三方软件来实现。远程桌面使用分三步:1、被控制端要开启远程桌面功能&#xff…

10_JS数组

JS 数组 以索引为键的对象&#xff0c;性能高于对象 创建 new Array() var arr Array() for(var i 0;i<5;i){arr[i] i; };var arr Array(1,2,3,4,5,6)数组字面量 var arr [2,3,4,5,6,7,8];不同&#xff1a;传入一个整数时&#xff0c;new把这个数当作数组长度&…

微软Hololens学院教程- Holograms 101: Introduction with Device【微软教程已经更新,本文是老版本】...

这是老版本的教程&#xff0c;为了不耽误大家的时间&#xff0c;请直接看原文&#xff0c;本文仅供参考哦&#xff01;原文链接&#xff1a;https://developer.microsoft.com/EN-US/WINDOWS/HOLOGRAPHIC/holograms_101 这篇文章将通过一个完整的实例来了解设备的核心特性&#…

python seaborn boxplot_python - 如何将文本框添加到Seaborn Boxplot? - 堆栈内存溢出

我试图在框图中插入一个文本框&#xff0c;但是出了点问题。 让我们先绘制箱线图&#xff1a;import pandas as pdimport matplotlib.pyplot as pltimport seaborn as sbdf_data pd.read_hdf(data.h5, keyfdf_data)##print(df_data)fig, (ax1, ax2) plt.subplots(1,2,gridspe…

JS_11正则表达式和字符串方法

正则表达式和字符串方法 正则表达式 创建正则对象 构造函数字面量 匹配模式 i&#xff1a;忽略大小写m&#xff1a;多行匹配g&#xff1a;全局匹配 正则语法 正则作用/a/检查是否有a/a|b/检查是否有a或b{}量词&#xff0c;如{1,3}匹配1到3次&#xff0c;{m,}匹配m次以上…

qtableview点击行将整行数据传过去_可以实时获取数据的Database Asset插件

前言&#xff1a;Goby之前开放的插件入口点较少&#xff0c;大家只能在扫描前、扫描后执行事件&#xff0c;无法参与扫描过程中来。为实现更多场景的应用及提高扫描效率&#xff08;如&#xff1a;后台爆破子域名等&#xff09;&#xff0c;Goby开放了一些新的API&#xff1a;事…

git 笔记

版本库1.repository在一个合适的地方&#xff0c;创建一个空目录$ mkdir learngit$ cd learngit$ pwd/User/leon/learngitpwd命令用于显示当前的目录&#xff0c;在我的电脑上&#xff0c;这个仓库位于/user/michael/learngit2.git init 将当前目录变成git 可以管理的仓库。$ g…

github 开源 代码 学习 集合(转载)

一个支持多种item类型的recycleView依赖注入库 1.通过注解的方式方便的把ViewHolder注入到recycleView中。 2.去除findViewByID等冗余操作。 3.去除编写adapter那些冗余逻辑&#xff0c;只需要编写proxy和holder即可快速的实现淘宝首页那样复杂的页面。https://github.com/s94…

JS_12 DOM

DOM 操作 HTML DOM Document Object Model&#xff0c;文档对象模型&#xff0c;用js操作文档对象 [外链图片转存失败(img-Dygj4uK9-1562680086020)(image/domtree.gif)] 节点&#xff1a;构成网页最基本的部分&#xff0c;网页的每一部分都是一个节点 文档节点&#xff1a;…

星星排序python_python中怎么实现星星排列

python中怎么实现星星排列&#xff1f;下面给大家带来几种排列阵型。星星阵型1def stars1(n):for i in range(1,n1):str "*"*iprint strif __name__ "__main__":stars1(5)星星阵型2def stars2(n):for i in range(1,n1):str **(n1-i)print strif __name_…

Kendo UI开发教程:Kendo UI模板概述

2019独角兽企业重金招聘Python工程师标准>>> Kendo UI框架提供了一个易用&#xff0c;高性能的JavaScript模板引擎。通过模板可以创建一个HTML片段然后可以和JavaScript数据合并成最终的HTML元素。Kendo 模板侧重于UI显示&#xff0c;支持关键的模板功能&#xff0c…

JS_13原型与原型链

原型与原型链 原型 每一个函数都有一个属性&#xff1a;prototype,默认指向object空对象&#xff0c;就是原型对象,原型对象有一个constructor属性&#xff0c;指向函数对象每一个实例化对象都有一个属性 proto ,默认指向构造函数的原型对象&#xff08;是构造函数原型对象的…

ajax数据保存及解析

1. $(#frmCam).serialize()&#xff1b;serialize() 方法通过序列化表单值&#xff0c;创建 URL 编码文本字符串。 2.自动对应ID和值 window.camConfig [<%(camConfig) %>]; if (camConfig.length>0) { for(var property in cam…

python和revit_pyRevit系列教程1

有没有人和我一样&#xff0c;想要自己写一些小功能来用(zhuang)用(bi)&#xff0c;但苦于C#太难学了&#xff0c;不得不作罢。话说感受过Python的美好&#xff0c;怎么能忍受C#的大括号&#xff01;毕竟人生苦短&#xff0c;我用Python&#xff01;好吧&#xff0c;我承认是我…

【leetcode】104. Maximum Depth of Binary Tree

1. 题目 Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node. 2. 思路 递归到左、右子树的max值&#xff0c;1. 3. 代码 /*** Definition for a binary tree …

JS_14 执行上下文与执行上下文栈

执行上下文和执行上下文栈 变量提升和函数提升 变量提升 所用使用var定义的变量&#xff0c;在程序运行前会被先定义&#xff0c;并赋初值为underfind&#xff0c;保存到其执行上下文中 函数提升 在调用函数&#xff0c;执行函数体之前&#xff0c;会先执行函数定义&#xff…

shell编程-变量

1.Bash用户自定义变量 【局部变量】 【按数据存储分类】&#xff1a;整型、浮点型、字符串型、日期型 【变量定义】&#xff1a;x5,y6,z$x$y56,m$(($x$y))11 【Bash变量默认都为字符串型&#xff0c;等号左右不可以有空格】 【变量叠加】&#xff1a;x"$x"123,x${x}3…

JS_15作用域与作用域链

作用域与作用域链 作用域 类别 全局作用域函数作用域块作用域&#xff1a;Es6时出现&#xff0c;之前没有 作用域与执行上下文 区别 创建时机不同 全局作用域外&#xff0c;每个函数都有自己的作用域&#xff0c;作用域在函数创建时就创建了&#xff0c;而不是在调用时全局执…

多线程调用同一个对象的方法_多线程之如何创建和使用线程

一、创建线程和使用线程方式1.1 继承Thread让线程类继承自Thread类&#xff0c;然后重写run()&#xff0c;把需要多线程调用的代码放到run()中。但是需要开启线程的时候不能调用run方法&#xff0c;而是需要调用start()方法。/*** 本类用于演示第一种实现多线程的方式*/ class…