javascript 构造函数类和原型 prototyp e定义的属性和方法的区别
1、把方法写在原型中比写在构造函数中消耗的内存更小,因为在内存中一个类的原型只有一个,写在原型中的行为可以被所有实例共享,实例化的时候并不会在实例的内存中再复制一份
而写在类中的方法,实例化的时候会在每个实例中再复制一份,所以消耗的内存更高
所以没有特殊原因,我们一般把属性写到类中,而行为写到原型中
2、构造函数中定义的属性和方法要比原型中定义的属性和方法的优先级高,如果定义了同名称的属性和方法,构造函数中的将会覆盖原型中的
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
</head>
<body>
<script type="text/javascript">
//把方法写在原型中比写在构造函数中消耗的内存更小,因为在内存中一个类的原型只有一个,写在原型中的行为可以被所有实例共享,实例化的时候并不会在实例的内存中再复制一份
//而写在类中的方法,实例化的时候会在每个实例中再复制一份,所以消耗的内存更高
//所以没有特殊原因,我们一般把属性写到类中,而行为写到原型中
function Abc(name){
this.name=name; //构造函数中定义的属性和方法要比原型中定义的属性和方法的优先级高,如果定义了同名称的属性和方法,构造函数中的将会覆盖原型中的,所以下面的x.sya()弹出的是“my name is xudeming”,如果把这句去掉,弹出的就是“my name is xx”;
//方法的优先级亦是如此
/*this.say=function(){
alert(1);
}*/
}
Abc.prototype={
name:"xx",
say:function(){
alert("my name is "+this.name);
}
}
var x=new Abc("xudeming");
x.say()
</script>
</body>
</html>
转载自:http://www.css119.com/archives/1446
javascript 构造函数类和原型 prototyp e定义的属性和方法的区别的更多相关文章
- 潭州课堂25班:Ph201805201 第十课  类的定义,属性和方法   (课堂笔记)
		
类的定义 共同属性,特征,方法者,可分为一类,并以名命之 class Abc: # class 定义类, 后面接类名 ( 规则 首字母大写 ) cls_name = '这个类的名字是Abc' # 在类 ...
 - JavaScript  访问对象属性和方法及区别
		
这篇文章主要介绍了浅析JavaScript访问对象属性和方法及区别的相关资料,仅供参考 属性是一个变量,用来表示一个对象的特征,如颜色.大小.重量等:方法是一个函数,用来表示对象的操作,如奔跑.呼吸. ...
 - Python进阶----类的结构(公有成员 , 私有成员(私有属性,私有方法),类方法,静态方法,属性) ,isinstance 和issubcalss ,元类(type())
		
Python进阶----类的结构(公有成员 , 私有成员(私有属性,私有方法),类方法,静态方法,属性) ,isinstance 和issubcalss ,元类(type()) 一丶类的结构细分 ...
 - 浅析JavaScript访问对象属性和方法及区别
		
属性是一个变量,用来表示一个对象的特征,如颜色.大小.重量等:方法是一个函数,用来表示对象的操作,如奔跑.呼吸.跳跃等. 在JavaScript中通常使用”."运算符来存取对象的属性的值.或 ...
 - 转: javascript动态添加、修改、删除对象的属性和方法
		
在其他语言中,对象一旦生成,就不可更改了,要为一个对象添加修改成员必须要在对应的类中修改,并重新实例化,而且程序必须经过重新编译.JavaScript 中却非如此,它提供了灵活的机制来修改对象的行为, ...
 - javascript动态添加、修改、删除对象的属性与方法
		
在其他语言中,对象一旦生成,就不可更改了,要为一个对象添加修改成员必须要在对应的类中修改,并重新实例化,而且程序必须经过重新编译.JavaScript 中却非如此,它提供了灵活的机制来修改对象的行为, ...
 - 【转】javascript 的类,原型,继承的理解
		
原文: https://www.cnblogs.com/codernie/p/9098184.html ------------------------------------------------ ...
 - javascript——对象的概念——函数 1 (函数对象的属性和方法)
		
一.创建函数 函数是一种对象:Function类 是对象,可以通过 Function 实例化一个函数,不过最多的还是利用 function 来创建函数. 方式一:利用 Function类 来实例化函数 ...
 - js数组定义、属性及方法(push/pop/unshfit/shfit/reverse/sort/slice/splice/indexOf/lastIndexOf)
		
数组 一.定义数组 * 字面量方式 var 数组名称 = [ value,value,... ] * 构造函数方式 var 数组名称 = new Array(value,value,...): v ...
 
随机推荐
- Pots--poj(bfs,输出路径)
			
http://poj.org/problem?id=3414 题意: 给你两个容量为a,b的杯子:有3个操作: 1:FILL(i):把第i个杯子从水库中装满: 2:DROP(i):把第i个杯子清空: ...
 - Python json pickle 模块 区别
			
json 支持 str.list.dict.int.tuple 数据类型 pickle 支持Python所有里的所有数据类型 缺点: 只能在Python使用 总结: 1.JSON只能处理基本数据类型. ...
 - 移除wordpress版本信息 删除无用信息
			
wordpress页面头部有很多无用的信息,像wordpress版本信息.feed等,如何把它们删除或不让它们先是出来呢? 将下面的代码加入到当前主题的functions.php,可以适当酌情保留 & ...
 - appstore加速审核通道
			
申请入口:https://developer.apple.com/contact/app-store/?topic=expedite
 - Selenium+Java元素定位之三
			
首先自己先准备一个表格代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
 - 去掉python的警告
			
1.常规警告 import warnings warnings.filterwarnings("ignore") 2.安装gensim,在python中导入的时候出现一个警告: w ...
 - iOS下拉刷新和上拉刷新
			
在iOS开发中,我们经常要用到下拉刷新和上拉刷新来加载新的数据,当前这也适合分页.iOS原生就带有该方法,下面就iOS自带的下拉刷新方法来简单操作. 上拉刷新 1.在TableView里,一打开软件, ...
 - php发送 与接收流文件
			
PHP 发送与接收流文件 sendStreamFile.php 把文件以流的形式发送 receiveStreamFile.php 接收流文件并保存到本地 sendStreamFile.php < ...
 - Lintcode: Lowest Common Ancestor
			
Given the root and two nodes in a Binary Tree. Find the lowest common ancestor(LCA) of the two nodes ...
 - Pointofix 1.7 Portable试用
			
Pointofix 1.7 Portable简体中文单文件便携版 软件大小:347K软件语言:简体中文软件类别:国外软件/桌面工具/教育教学运行环境:windows XP/Vista/Win7开 发 ...