[JS]如何理解JS中的类和对象
--------------------------------------------------------------------------------------------
变量:自由的 => 属性:属于一个对象
函数:自由的 => 方法:属于一个对象
函数:
function a()
{
console.log('a');
}
方法:
var arr = [1, 2, 3, 4];
arr.a = function()
{
console.log('a');
}
===================================================
简单的例子:
var arr = new Array(1, 2, 3);
这里的Array就是类,arr就是对象。
理解this:
arr = [1, 2, 3, 4];
arr.a = 5;
arr.showA = function()
{
console.log(this.a); //this为arr
}
oDiv.onclick = function()
{
console.log(this); //this为oDiv
}
this:当前发生事件的对象,当前方法属于谁就代表谁。
===================================================
混合方式构造对象:
原则 => 构造函数:加属性
原型:加方法
对象命名规范 => 类名首字母大写
function CreatePerson(name, sex) //构造函数
{
//成员属性
this.name = name,
this.sex = sex,
}
CreatePerson.prototype.showName = function() //在原型里加方法
{
console.log('My Name Is ' + this.name);
}
CreatePerson.prototype.showSex = function()
{
console.log('My Sex Is ' + this.sex);
}
var obj = new CreatePerson('Cw', 'male');
var obj2 = new CreatePerson('Girl', 'female');
console.log(obj.showName == obj2.showName); //true;
//同一方法,不同对象,如果不使用原型添加则不相等
//原型属于类,在对象中加入自己的属性、方法,原型修改将对已有对象产生影响。
//给对象添加方法,影响当前; 给原型添加方法,影响一类。原型的缺陷:无法限制覆盖。
===================================================
为对象添加方法和属性(注意):
事件处理中this的本质 => window
方法属于谁
不能在系统对象中随意附加方法、属性,否则会覆盖已有方法、属性。
object对象(空的)
其它对象:Date,Array,RegExp
function createPerson(name, sex) //构造函数
{
var obj = new Object(); //创建对象
obj.name = 'Cw'; //添加
obj.sex = 'male';
obj.showName = function()
{
console.log('My Name Is ' + this.name);
}
obj.showSex = function()
{
console.log('My Sex Is ' + this.sex);
}
obj.showName();
obj.showSex();
return obj; //返回对象
}
var obj = createPerson('Cw', 'male');
obj.showName();
obj.showSex();
缺点:如果要创建多个对象,多次调用方法,对象方法重复创建。
===================================================
工厂方式:调用函数前加new,系统自动创建一个空对象并返回
function createPerson(name, sex)
{
this.name = 'Cw';
this.sex = 'male';
this.showName = function()
{
console.log('My Name Is ' + this.name);
}
}
var obj = new createPerson('Cw', 'male');
原型的使用:
var arr = new Array(12, 13);
var arr2 = new Array(14, 15);
Array.prototype.sum = function()
{
var result = 0;
for(var i = 0; i < this.length; i++)
{
result += this[i];
}
return result;
}
console.log(arr.sum());
console.log(arr2.sum());
Link: http://www.cnblogs.com/farwish/p/4055675.html
------------------------------------www.farwish.com------------------------------------
[JS]如何理解JS中的类和对象的更多相关文章
- python中的类,对象,方法,属性等介绍
注:这篇文章写得很好.加底纹的是我自己的理解 python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性( ...
- 深入理解Java中的不可变对象
深入理解Java中的不可变对象 不可变对象想必大部分朋友都不陌生,大家在平时写代码的过程中100%会使用到不可变对象,比如最常见的String对象.包装器对象等,那么到底为何Java语言要这么设计,真 ...
- Java学习笔记十三:Java中的类和对象
Java中的类和对象 一:什么是对象: 总的来说就是"万物皆对象",客观存在的事物皆为对象.是计算机所关注的具体信息. 对象(object)是一件事.一个物体.一个名词,或可以获得 ...
- Java程序设计基础笔记 • 【第7章 Java中的类和对象】
全部章节 >>>> 本章目录 7.1 理解类和对象 7.1.1 对象 7.1.2 抽象与类 7.1.3 类与对象的关系: 7.2 Java中的类和对象 7.2.1 类的定义 ...
- 【PHP】PHP中的类与对象
面向对象并不是PHP的关键,但PHP确实能很好的支持面向对象编程,而且类与对象也成为了PHP5的核心组成部分.PHP的面向对象特性让构建大型的复制应用成为可能,有了类与对象,就自然产生了各种编程范式和 ...
- 【JAVA零基础入门系列】Day11 Java中的类和对象
今天要说的是Java中两个非常重要的概念--类和对象. 什么是类,什么又是对象呢?类是对特定集合的概括描述,比如,人,这个类,外观特征上,有名字,有年龄,能说话,能吃饭等等,这是我们作为人类的相同特征 ...
- Python Cookbook(第3版)中文版:15.19 从C语言中读取类文件对象
15.19 从C语言中读取类文件对象¶ 问题¶ 你要写C扩展来读取来自任何Python类文件对象中的数据(比如普通文件.StringIO对象等). 解决方案¶ 要读取一个类文件对象的数据,你需要重复调 ...
- js中对类和对象的理解
类 :对一群具有相同特征的对象的集合的描述:对象:真实存在的对象个体: **面向对象,而不是面向类. 1.一切皆对象,继承靠原型链,多态靠弱类型,封装--虽然可以靠闭包,但我个人更推崇和python一 ...
- js中的类和对象以及自定义对象
js中的类 1.类的声明 function Person(name,age){ this.name=name; this.age=age; this.test=function(a){ alert(a ...
- 理解Python中的类对象、实例对象、属性、方法
class Animal(object): # 类对象 age = 0 # 公有类属性 __like = None # 私有类属性 def __init__(self): # 魔法方法 self.na ...
随机推荐
- Html5——音频标签使用
Ogg 文件,适用于Firefox.Opera 以及 Chrome 浏览器. 要确保适用于 Safari 浏览器,音频文件必须是 MP3 或 Wav 类型. audio 元素允许多个 source 元 ...
- WebView长按保存图片;WebView不跳转到系统的浏览器;WebView加载显示进度条;WebView返回事件处理;
直接看代码即可,代码里面注释写的很清楚,这个类拉下来就能用: 写法和命名比较粗暴,但也简单易懂: public class MainActivity extends AppCompatActivity ...
- 2-scala集合
1.集合的数据结构: array.seq .set .map(映射) 2.集合分类 集合分为可变集合和不可变集合(除元组外,元组没有可变和不可变) scala.collection.immutable ...
- JVM总结-垃圾回收(下)
大部分的 Java 对象只存活一小段时间,而存活下来的小部分 Java 对象则会存活很长一段时间. 之所以要提到这个假设,是因为它造就了 Java 虚拟机的分代回收思想.简单来说,就是将堆空间划分为两 ...
- 五大排序算法(Python)
冒泡排序 冒泡排序通常是在CS入门课程中教的,因为它清楚地演示了排序是如何工作的,同时又简单易懂.冒泡排序步骤遍历列表并比较相邻的元素对.如果元素顺序错误,则交换它们.重复遍历列表未排序部分的元素,直 ...
- android 开发 时间选择器TimePicker的使用
android系统自带时间控件:DatePicker 日期显示控件 DatePickerDialog 日期对话框控件TimePicker 时间显示控件 TimePickerDialog 时间对话框控件 ...
- android 开发 实现一个activity变成dialog对话框
效果图: 首先说说为什么需要大费周章的去用activity实现一个dialog,明明android系统已经提供了一个更方便的dialog了.原因如下: 1.activity模式的dialog可以实现更 ...
- 在Java中多段执行adb或者shell的命令
public void Bale (String logname){ //ant打包 System.out.println("-----------正在执行ant编译-----------& ...
- ThinkPHP 小于5.0.24 远程代码执行高危漏洞 修复方案
漏洞描述由于ThinkPHP5.0框架对Request类的method处理存在缺陷,导致黑客构造特定的请求,可直接GetWebShell. 漏洞评级严重 影响版本ThinkPHP 5.0系列 < ...
- 《算法》第四章部分程序 part 3
▶ 书中第四章部分程序,加上自己补充的代码,随机生成各类有向图 ● 随机生成有向图 package package01; import edu.princeton.cs.algs4.StdOut; i ...