--------------------------------------------------------------------------------------------

变量:自由的  =>  属性:属于一个对象

函数:自由的  =>  方法:属于一个对象

函数:

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中的类和对象的更多相关文章

  1. python中的类,对象,方法,属性等介绍

    注:这篇文章写得很好.加底纹的是我自己的理解 python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性( ...

  2. 深入理解Java中的不可变对象

    深入理解Java中的不可变对象 不可变对象想必大部分朋友都不陌生,大家在平时写代码的过程中100%会使用到不可变对象,比如最常见的String对象.包装器对象等,那么到底为何Java语言要这么设计,真 ...

  3. Java学习笔记十三:Java中的类和对象

    Java中的类和对象 一:什么是对象: 总的来说就是"万物皆对象",客观存在的事物皆为对象.是计算机所关注的具体信息. 对象(object)是一件事.一个物体.一个名词,或可以获得 ...

  4. Java程序设计基础笔记 • 【第7章 Java中的类和对象】

    全部章节   >>>> 本章目录 7.1 理解类和对象 7.1.1 对象 7.1.2 抽象与类 7.1.3 类与对象的关系: 7.2 Java中的类和对象 7.2.1 类的定义 ...

  5. 【PHP】PHP中的类与对象

    面向对象并不是PHP的关键,但PHP确实能很好的支持面向对象编程,而且类与对象也成为了PHP5的核心组成部分.PHP的面向对象特性让构建大型的复制应用成为可能,有了类与对象,就自然产生了各种编程范式和 ...

  6. 【JAVA零基础入门系列】Day11 Java中的类和对象

    今天要说的是Java中两个非常重要的概念--类和对象. 什么是类,什么又是对象呢?类是对特定集合的概括描述,比如,人,这个类,外观特征上,有名字,有年龄,能说话,能吃饭等等,这是我们作为人类的相同特征 ...

  7. Python Cookbook(第3版)中文版:15.19 从C语言中读取类文件对象

    15.19 从C语言中读取类文件对象¶ 问题¶ 你要写C扩展来读取来自任何Python类文件对象中的数据(比如普通文件.StringIO对象等). 解决方案¶ 要读取一个类文件对象的数据,你需要重复调 ...

  8. js中对类和对象的理解

    类 :对一群具有相同特征的对象的集合的描述:对象:真实存在的对象个体: **面向对象,而不是面向类. 1.一切皆对象,继承靠原型链,多态靠弱类型,封装--虽然可以靠闭包,但我个人更推崇和python一 ...

  9. js中的类和对象以及自定义对象

    js中的类 1.类的声明 function Person(name,age){ this.name=name; this.age=age; this.test=function(a){ alert(a ...

  10. 理解Python中的类对象、实例对象、属性、方法

    class Animal(object): # 类对象 age = 0 # 公有类属性 __like = None # 私有类属性 def __init__(self): # 魔法方法 self.na ...

随机推荐

  1. 00010 - cut选取命令详解

    定义 正如其名,cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的.cut是以每一行为一个处理对象的,这种机制和sed是一样的 剪切依据 cut命令主要是接受三个定位方法: 第一,字节(by ...

  2. 将本地代码提交至gitHub

    1.注册github账号 2.本地安装git 3.打开需要提交代码的目录 4.右击git bash here 5. $ git init 6  $ ssh-keygen -t rsa -C " ...

  3. Zookeeper数据查看工具ZooInspector

    Zookeeper作为常用的集群协调者组件被广泛应用,尤其是在大数据生态圈中: Zookeeper集群存储各个节点信息,包括:Hadoop.Hbase.Storm.Kafka等等: 二.查询ZK数据的 ...

  4. 数组.html

    <script > var arr1 = [1, 2, 3, 4, 5, 6 ]; 赋值 var arr2 =Array(1,2,3,4,5,6); var arr3 = new Arra ...

  5. 记一次http接口格式摸索

    有一个需求,需要用到内部通讯工具的一个ERP转发接口,虽然有接口文档,但是对中文的编码格式没有提示,中间几经周折,最后才想起来通过F12查看提供的测试接口发送请求时的数据格式来分析,经过解析中文只有被 ...

  6. WPF c# 定时器

    //定时查询-定时器 DispatcherTimer dispatcherTimer = new DispatcherTimer(); dispatcherTimer.Tick += (s, e) = ...

  7. official shiro(Reference Manual)

    Apache Shiro Reference Documentation Overview Core Spring-based Applications 1.Overview pom.xml < ...

  8. 前端通过js-xlsx获取Excel完整数据

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. iPhone投影

    iPhone投影到Mac上面的操作,用QuickTime,选择主菜单的新建屏幕录制,然后点击录制按钮右边的箭头,相机切换到iPhone就可以了. 相关操作参照 https://jingyan.baid ...

  10. 【Social listening实操】作为一个合格的“增长黑客”,你还得重视外部数据的分析!

    本文转自知乎 作者:苏格兰折耳喵 ----------------------------------------------------- 在本文中,作者引出了"外部数据"这一概 ...