文章地址: 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. Kryo官方文档-中文翻译

    Kryo作为一个优秀的Java序列化方案,在网上能找到不少测评,但未见系统的中文入门或说明文档.官方文档是最好的学习文档.虽然英文不差,但啃下来毕竟没母语来的舒服.这里抽出时间做些翻译,以方便大家查阅 ...

  2. mybatis-plus思维导图,让mybatis-plus不再难懂

    mybatis-plus与mybatis mybatis Mybatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置 ...

  3. SQL语句问题具体什么意思呢?

    SQL语句问题 底下SQL查询语法中的 as A 和 as B 是什么意思?为什么A和B不用定义就能用? 程序代码:     Private Sub LoadFileList(ByVal strSub ...

  4. Java中时间和日期的处理

    一.日期转换为字符串 1.日期以特定的格式输出: // 创建日期并转换为yyyy-MM-dd格式_(MM一定要大写,以免与hh:mm:ss中的mm冲突) SimpleDateFormat sdf = ...

  5. Oracle之PL/SQL编程

    PL/SQL(Procedural Language/SQL,过程语言/SQL) 是结合了Oracel过程语言和结构化查询语言(SQL)的一种扩展语言. 优点: (1)PL/SQL具有编程语言的特点, ...

  6. Jmeter VS LR参数取值方式和迭代方式

    Jmeter的参数化 Jmeter中的参数就是变量. 变量的来源:测试计划.UDV.CSV.函数.正则表达式.数据库. 以Jmeter的CSV文件参数化为例:

  7. PLAY2.6-SCALA(六) 异步处理结果

    1.创建异步的controller Play是一个自底向上的异步框架,play处理所有的request都是异步.非阻塞的.默认的方式是使用异步的controller.换句话说,contrller中的应 ...

  8. linux之架构图和八台服务器

    (1) (2)

  9. hdu5131 贪心

    #include<stdio.h> #include<string.h> #include<algorithm> #include<string> #i ...

  10. 【NS2】cygwin+NS2.29安装之道 (转载)

    最近接了一个需要进行网络模拟的项目.对与网络模拟一窍不通的本人算是一个挑战.于是乎开始整日上网搜索相关的资料,没想到这个世界的资源真是丰富多彩.最后发现了一个网络模拟的流行软件NS2,在经过多次尝试后 ...