js中除了基本类型,就是对象。可以说在js中处处皆对象。

由于js是弱语言,在编写的过程中很容易混淆 objectclass 也就是对象构造器

object(对象):一般对象都由var关键字声明。

class(构造器):js中function除了声明函数,也可以声明构造器。故构造器是特殊的函数。

创建对象:

常见创建对象的方法有两种。

(1)对象字面量

var obj = { a:1, b:2 };  obj.a; //输出1

对象字面量创建的对象中也可以嵌套对象

var obj = { a:1, b:2, c:{ cx:3, cy:4 } }; obj.c.cx; //输出3

字面量构造对象函数

var obj = {
a:1,
b:2,
//创建对象函数
add(){
return this.a + this.b;
},
//函数重写
add(x,y){
return x + y;
}
};
obj.add(obj.a,obj.b); //输出3
obj.add(); //输出3

注意:的是对象字面量创建出的并不是class(类)而是object(对象),所以字面量创建的对象不可以当做class去new。

var obj = { a:1, b:2 };  var obj_o = new obj(); //报错

(2)构造器创建对象。(class new object)

构造器创建对象,首先创建构造器(class)。这和其他语言的class new object同理。

创建构造器:

1、function创建构造器

function obj(){ }; //构造器
var obj_1 = new obj(); //创建对象

js中function可以作为函数也可以作为构造器。

2、Constructor创建构造器

    function obj(){
this.name = "obj_name";
this.from = "obj_china";
this.say = function(){ console.log("my name is " + this._name + "I'm from " + this.from); }
} var obj_1 = new obj();
obj_1.say(); //输出“my name is undefinedI'm from obj_china”

Constructor创建构造器是用this关键字预先设定了一些属性和函数,以供class下的对象使用。

Constructor和工厂作用差不多,缺点就是每次创建一个对象就会调用一次工厂,浪费内存。

3、prototype创建构造器

    function obj(){}
obj.prototype._name = "obj_name";
obj.prototype.hobby = "obj_hobby";
obj.prototype.arr = new Array();
var obj_1 = new obj();
var obj_2 = new obj();
obj_1.arr.push("one");
obj_2.arr[0] //输出 one

缺点一旦修改原型属性,原型链上对象的属性都会被修改。

原型构造器,通过prototype定义一些属性和函数,通过原型构造器创建的每个对象都共用prototype定义的这些属性和函数。

js之oop <一> 创建对象,构造器(class)的更多相关文章

  1. 拖拽系列二、利用JS面向对象OOP思想实现拖拽封装

    接着上一篇拖拽系列一.JavaScript实现简单的拖拽效果这一篇博客将接着对上一节实现代码利用JS面向对象(OOP)思维对上一节代码进行封装; 使其模块化.避免全局函数污染.方便后期维护和调用:写到 ...

  2. JS中OOP之模拟封装和继承和this指向详解

    大家好,今天我带大家学习一下js的OOP, 大家都知道,面向对象有三个基本特征,继承,封装和多态,面向对象的语言有那么几种,C++,PHP,JAVA等,而功能强大的JS可以模拟实现面向对象的两大特征, ...

  3. js面向对象自定义MyString()的构造器函数,实现内建String()属性和方法:

    js面向对象自定义MyString()的构造器函数,实现内建String()属性和方法: var s = new MyString('hello'); s.length; s[0]; // " ...

  4. js中OOP小指南

    js中OOP小指南 在指南中,我将尝试解析以面向对象规范聚焦的es6的新特性. 首先, 什么是设计模式 范例是某个事务的例子或模型,在某种情况下,按照一种模式创建了计算机程序. 什么是面向对象 显然你 ...

  5. js中json法创建对象(json里面的:相当于js里面的=)

    js中json法创建对象(json里面的:相当于js里面的=) 一.总结 json里面的:相当于js里面的= 4.json创建js对象解决命名冲突:多个人为同一个页面写js的话,命名冲突就有可能发生, ...

  6. JS高级---三种创建对象的方式

    JS高级---三种创建对象的方式 字面量的方式 (实例对象) 调用系统的构造函数 自定义构造函数方式 //创建对象---->实例化一个对象,的同时对属性进行初始化 var per=new Per ...

  7. 关于Js OOP编程 创建对象的一些理解。

    面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物. 对象的含义          对象可以是汽车,人,动物,文字,表单或者任何存在的事物等等. 对象有: 属性----- ...

  8. js之oop <二> 对象属性

    js中对象属性可以动态添加和删除.删除对象属性用delete关键字. function obj(){ } var oo = new obj(); oo.a = "a"; oo.b ...

  9. js面向对象oop编程

    理解对象 对象这个词如雷贯耳,同样出名的一句话:XXX语言中一切皆为对象! 对象究竟是什么?什么叫面向对象编程? 对象(object),台湾译作物件,是面向对象(Object Oriented)中的术 ...

随机推荐

  1. asp.net中调用javascript自定义函数的方法(包括引入JavaScript文件)总结

    通常javascript代码可以与HTML标签一起直接放在前 端页面中,但如果JS代码多的话一方面不利于维护,另一方面也对搜索引擎不友好,因为页面因此而变得臃肿:所以一般有良好开发习惯的程序员都会把 ...

  2. sharepint 数据视图 添加超链接

    1. 数值域清除数值,输入文本 详细进度 2. 添加连接 到 哪个页面 3. 将inteid拖过来 4. 连接到项目显示表单 5. 直接改下面的连接地址 <a href="http:/ ...

  3. python实现删除文件与目录的方法

    os.remove(path) 删除文件 path. 如果path是一个目录, 抛出 OSError错误.如果要删除目录,请使用rmdir().os.rmdir()只能删除空目录 remove() 同 ...

  4. B类地址

    从 128.0.0.0 到 191.255.255.254 的单址广播 IP 地址.前两个八位字节指明网络,后两个八位字节指明网络上的主机.B类地址范围:128.0.0.1到191.255.255.2 ...

  5. 减少C++代码编译时间的方法

    c++ 的代码包含头文件和实现文件两部分, 头文件一般是提供给别人(也叫客户)使用的, 但是一旦头文件发生改变,不管多小的变化,所有引用他的文件就必须重新编译,编译就要花时间,假如你做的工程比较大(比 ...

  6. oracle闪回查询

    一.引言 程序中用到需要同步oracle更新和删除数据,于是考虑利用oracle的闪回查询机制来实现. 利用该机制首先需要oracle启用撤销表空间自动管理回滚信息,并根据实际情况设置对数据保存的有效 ...

  7. Spring声明式事务管理与配置详解

    转载:http://www.cnblogs.com/hellojava/archive/2012/11/21/2780694.html 1.Spring声明式事务配置的五种方式 前段时间对Spring ...

  8. POJ Sky Code 莫比乌斯反演

    N. Sky Code Time Limit: 1000ms Case Time Limit: 1000ms Memory Limit: 65536KB   64-bit integer IO for ...

  9. 2016 ACM/ICPC Asia Regional Qingdao Online HDU5878

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=5878 解法:先保存,再二分查询~具体http://blog.csdn.net/coder_xia/arti ...

  10. MFC设置对话框大小

    设置对话框大小不可改变 1.在类的头文件中加入函数申明 (.h文件) afx_msg void OnGetMinMaxInfo(MINMAXINFO *lpMMI); 2.在消息映射中添加 (.cpp ...