聊一聊JS中的prototype
作者:菠萝般若 发布时间:2024-05-02 16:20:18
标签:js,prototype
什么是prototype:
function定义的对象有一个prototype属性,prototype属性又指向了一个prototype对象,注意prototype属性与prototype对象是两个不同的东西,要注意区别。在prototype对象中又有一个constructor属性,这个constructor属性同样指向一个constructor对象,而这个constructor对象恰恰就是这个function函数本身。
//判断是否是数组
function isArray(obj) {
return Object.prototype.toString.call(obj) === '[object Array]';
};
//判断是否是function
function isFunc(obj) {
return Object.prototype.toString.call(obj) === '[object Function]';
}
// 是否是json对象
function isJson(obj) {
return typeof (obj) == "object" && (isArray(obj) || Object.prototype.toString.call(obj).toLowerCase() == "[object object]");
}
对于这个属性我的理解就是继承原型对象的方法和属性。属性和方法是什么?可能一些新人不是很了解,打个比方,自行车的属性有:外表红色,可变速,可照明等,属性就是对象是什么?方法有骑自行车去上学等,方法就是对象能干什么?
那么下面我就从含义到应用说说对她的理解吧,不足之处还请大牛指点。
prototype是什么含义呢?
javascript中prototype属性:返回对象类型原型的引用。
举个例子,
A.prototype = new B()
A的prototype是B的一个实例,也就是说A讲B中的方法和属性都克隆来了一遍。注意这里是克隆而不是继承,至于克隆和继承的区别,感兴趣的同学可以自己去问下度娘。
下面上个我做的简单实例:
html部分:
<body>
<a class="btn btn1">按钮1</a>
<a class="btn btn2">按钮2</a>
<a class="btn btn3">按钮3</a>
</body>
js部分:
(function(){
var btn1 = $(".btn1");
var btn2 = $(".btn2");
var btn3 = $(".btn3");
function baseClass(){
this.showMsg = function(){
alert('11111');
}
}
function extendClass(){
this.showMsg = function(){
alert('2222');
}
}
//prototype属性可以返回对象类型的原型的引用
//如果构造函数与原型函数有同名方法,那么优先搜索构造函数的方法,不会再次克隆原型函数的同名函数
extendClass.prototype = new baseClass();
var initance = new extendClass();
btn1.click(function(){
initance.showMsg();
});
var baseinitance = new baseClass();
btn2.click(function(){
baseinitance.showMsg.call(initance);
})
})();
理解以上实例,基本你可以初步对js中的prototype属性有个大致的认识。
以上所述是小编给大家介绍的JS中的prototype网站的支持!
来源:http://www.cnblogs.com/edwards/archive/2016/09/29/5919138.html
0
投稿
猜你喜欢
- 1.打开PyCharm,选择File--Settings2.依次选择Editor---Code Style-- File and Code
- 最近有个小项目,需要爬取页面上相应的资源数据后,保存到本地,然后将原始的HTML源文件保存下来,对HTML页面的内容进行修改将某些标签整个给
- 序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。Pyt
- 如果您是HTML的初学者,请您先自学HTML。因为DHTML是现有的HTML技术的一个综合,所以HTML语言对学习动态HTML是
- 现在我们已经很熟悉Django的MTV模式了。模板(template)负责如何去展示数据,而视图(view)负责筛选出正确的数据。因此通常来
- 本文实例讲述了Python实现多线程的两种方式。分享给大家供大家参考,具体如下:目前python 提供了几种多线程实现方式 thread,t
- 有两个结构完全相同的表,由其中一个表插入另一个表中指定条件的数据,报如下错误: 仅当使用了列列表并且 IDENTITY_INSERT 为 O
- 一:购物车管理功能1.添加商品(不重复添加)、2.删除商品(购物车中有的才能删除)、3.查看购物车4.退出系统产品列表products =
- 一、前言1.1 回归分析是用于研究分析某一变量受其他变量影响的分析方法,其基本思想是以被影响变量为因变量,以影响变量为自变量,研究因变量与自
- Flask 是一个 Python 实现的 Web 开发微框架。这篇文章是一个讲述如何用它实现传送视频数据流的详细教程。我敢肯定,现在你已经知
- 问题:python3 如何转换html到pdf描述:我的电脑是windows764位,python3.4我想用python 转换html到p
- export default ({ url, method = 'GET', data
- 1、python中__name__是什么意思?很多python的初学者可能都会遇到一个问题:__name__是什么意思?在刚开始学习pyth
- 前言:循环中通过break语句会立刻终止并跳出循环语句。break就像是终止按键,不管执行到哪一步,只要遇到break,不管什么后续步骤,直
- 现在有一个xml,格式如下: <date> <item> <id> 1 </id> <
- 一、前言这几天宅在家里网上冲浪,无意间看到了一个比较有趣的项目,就是使用 Python 语言实现对视频中的人物的眨眼进行计数并描绘在图表中。
- HDF5 简介HDF(Hierarchical Data Format)指一种为存储和处理大容量科学数据设计的文件格式及相应库文件。HDF
- asp压缩access数据库,具体asp代码见下: Class DatabaseTools &n
- 用pytorch训练一个神经网络时,我们通常会很关心模型的参数总量。下面分别介绍来两种方法求模型参数一 .求得每一层的模型参数,然后自然的可
- 这几天关于accuracy和loss的计算有一些疑惑,原来是自己还没有弄清楚。给出实例def train(train_loader, mod