文章地址: https://www.cnblogs.com/sandraryan/

创建对象

创建对象的三种方式

构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象

1. 调用系统的构造函数创建对象(又称为实例化一个对象)

  var obj = new Object();
  // 添加属性,方法
obj.name = 'jack';
obj.age = 20;
obj.eat = function(){
//匿名函数
console.log('hi');
}
  // 调用属性/方法
console.log(obj.name);
obj.eat();

2. 自定义构造函数创建对象和工厂模式(不同)

构造函数首字母大写(区分构造函数和普通函数的人为规定)

对象是一个特定事物的属性和方法的集合,构造函数是类似于一大类的集合(js中没有类的概念)

利用一个构造函数创建对象的过程称为实例化一个对象

  // 一个人的类型
var person = new Object();
person.name = 'lucy';
person.age = 20;
person.sayHi = function(){
console.log('person ' + person.name);
console.log('person ' + this.name); } // 一个学生的类型
var stu = new Object();
stu.name = 'sunny';
stu.age = 18;
stu.task = function(){
console.log('study ' + stu.name);
console.log('study ' + this.name);
}
// 在当前对象的方法中可以访问当前对象的属性,可用this指代 // 调用各自的属性
// 调用各自的方法 person.sayHi();
stu.task();
//判断person是否是一个对象,不能判断是那个对象(person还是stu)
console.log(person instanceof Object);
创建对象的代码封装在一个函数中,可以一次性创建多个对象
构造函数创建对象
 function Person(name,age) {
this.name=name;
this.age=age;
this.sayHi=function () {
console.log("您好");
};
}
//创建对象---->实例化一个对象,的同时对属性进行初始化 需要new关键字
var per=new Person("小红",20);
工厂模式创建对象
    // 工厂模式创建对象
function createObject(name,age){
// 创建对象
var obj = new Object();
// 对象添加属性
obj.name = name;
obj.age = age;
// 对象添加方法
obj.sayHi = function(){
console.log('hi');
};
return obj;
}
var per1 = createObject('mary',10);
console.log(per1); var per2 = createObject('jack',20);
console.log(per2);
  //new 用于创建空对象并使this指向当前对象

   // 方法也可以传递不同的值
function createObject(name,age){
var obj = new Object();
obj.name = name;
obj.age = age;
obj.sayHi = function(word){
console.log(word);
};
return obj;
}
var per1 = createObject('mary',10);
per1.word = 'hello';
console.log(per1); var per2 = createObject('jack',20);
per2.word = 'hi';
console.log(per2);

共同点:都是函数,都可以创建对象,都可以传入参数

工厂模式:

函数名是小写

有new,

有返回值

new之后的对象是当前的对象

直接调用函数就可以创建对象

自定义构造函数:

函数名是大写(首字母)

没有new

没有返回值

this是当前的对象

通过new的方式来创建对象

3. 字面量方式

 var Dog = {
name: 'jack',
age: 2,
eat: function(){
console.log('eating');
}
} Dog.eat();
console.log(Dog);
 // 创建一个叫dog的对象,添加名字/年龄/颜色的属性,行走和吃东西的方法

构造函数可以实例化对象

构造函数中有一个属性叫prototype,是构造函数的原型对象

构造函数的原型对象(prototype)中有一个constructor构造器,这个构造器指向的就是自己所在的原型对象所在的构造函数

实例对象的原型对象(__proto__)指向的是该构造函数的原型对象

构造函数的原型对象(prototype)中的方法是可以被实例对象直接访问的

js创建对象的三种方式和js工厂模式创建对象的更多相关文章

  1. js创建对象的三种方式

    <script> //创建对象的三种方式 // 1.利用对象字面量(传说中的大括号)创建对象 var obj1 = { uname: 'ash', age: 18, sex: " ...

  2. spring入门:beans.xml不提示、别名、创建对象的三种方式

    spring的版本是2.5 一.beans.xml文件不提示 Location:spring-framework-2.5.6.SEC01\dist\resources\spring-beans-2.5 ...

  3. Spring笔记03(Spring创建对象的三种方式)

    1.创建对象的三种方式和bean的生命周期的验证: Animal接口代码: package cn.pb.dao; /** * 动物接口 */ public interface Animal { //吃 ...

  4. Spring创建对象的三种方式以及创建时间

    创建对象的三种方式: 1.采用默认的构造函数创建 2.采用静态工厂方法 1.写一个静态工厂方法类 public class HelloWorldFactory { public static Hell ...

  5. JavaScript中创建对象的三种方式!

    JavaScript中创建对象的三种方式! 第一种 利用对象字面量! // 创建对象的三种方式! // 1 对象字面量. var obj = { // 对象的属性和方法! name: 'lvhang' ...

  6. Spark部署三种方式介绍:YARN模式、Standalone模式、HA模式

    参考自:Spark部署三种方式介绍:YARN模式.Standalone模式.HA模式http://www.aboutyun.com/forum.php?mod=viewthread&tid=7 ...

  7. js 函数定义三种方式

    <p>Js 函数定义的三种方式:</p> <br> <p>方式一:function</p> <script type="te ...

  8. JavaScript 基础——使用js的三种方式,js中的变量,js中的输出语句,js中的运算符;js中的分支结构

    JavaScript 1.是什么:基于浏览器 基于(面向)对象 事件驱动 脚本语言 2.作用:表单验证,减轻服务器压力 添加野面动画效果 动态更改页面内容 Ajax网络请求 () 3.组成部分:ECM ...

  9. C++创建对象的三种方式

    C++在创建对象的时候,有三种方式: #include <iostream> using namespace std; class A { private: int n; public: ...

随机推荐

  1. ecshop二次开发之单点登录

    单点登录(SingleSignOn),简称为SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. 当用户第一次访问应 ...

  2. 【JZOJ5060】【GDOI2017第二轮模拟day1】公路建设 线段树+最小生成树

    题面 在Byteland一共有n 个城市,编号依次为1 到n,它们之间计划修建m条双向道路,其中修建第i 条道路的费用为ci. Byteasar作为Byteland 公路建设项目的总工程师,他决定选定 ...

  3. 简单介绍几个CSSReset的方法

    对于小型的网站来说,用这个并不会带来大的资源浪费,但如果是像Yahoo这种架构非常大的网站,必须要有选择地进行CSS重设,以减 少资源浪费. 正在使用CSS的你,用过CSS Reset吗?当然,或许你 ...

  4. 【python小随笔】celery周期任务(简单原理)

    1:目录结构 |--celery_task |--celery.py # 执行任务的main函数 |--task_one # 第一个任务 |--task_two # 第2个任务 . . . . |-- ...

  5. python编写购物车小程序

     #练习#程序购物车#启动程序后,让用户输入工资,  然后打印商品列表,允许用户根据商品编号购买商品用户选择商品后 #检测余额是否够,够就直接扣款,不够就提醒可随时退出,退出时,打印已购买商品和余额  ...

  6. 【《Objective-C基础教程 》笔记】(八)OC的基本事实和OC杂七杂八的疑问

    一.疑问 1.成员变量.实例变量.局部变量的差别和联系,在訪问.继承上怎样表现. 2.属性@property 和 {变量列表} 是否同样.有什么不同. 3.类方法.类成员.类属性:实例方法.实例变量. ...

  7. SQL优化系列(一)- 优化SQL

     优化SQL SQL开发人员从源代码中发现一条跑得很慢的SQL, 如何优化? DBA从AWR报告中发现一条跑得很慢的SQL,没有源代码或者不想修改源代码怎么办? SQL自动优化工具SQL Tuning ...

  8. js自定义滚动条

    今天听到别人说自定义滚动条,所以就在吃饭的时间写了个 html部分 <div class="out" id="out"> <div class ...

  9. $.extend用法详解(一)

    jQuery.extend( target [, object1 ] [, objectN ] ) 在这里target是Object,它有两个作用: 1. 如果后面没有对应的object1及objec ...

  10. 洛谷2050 BZOJ2897美食节题解

    放个链接 BZ链接 其实这题就是修车的加强版,做法差不多,还是对于每个厨师进行拆点 可是这样强行建图跑网络流会T飞 我们发现,如果一个厨师没有做倒数第x到菜,他一定不会做倒数第x+1到菜 我们的每次增 ...