美文网首页
创建对象的方法(一)

创建对象的方法(一)

作者: QinRenMin | 来源:发表于2018-05-29 18:48 被阅读0次
  • 工厂模式
    理解:工厂模式就是批量化生产,但是存在的缺陷就是不知道对象的类型是什么,都是Object
function createBook(name,author,price) {
    let book = {};
    book.name = name;
    book.author =author ;
    book.price = price;
    book.sayIt = function () {
        console.log(this.name);
    };
    return book;
}
let book1 = createBook("愿有人陪你颠沛流离","lsh",35);
book1.sayIt();
  • 构造函数模式
    理解:创建自定义对象类型的属性和方法.重写上述模式
function Book(name,author,price) {
    book.name = name;
    book.author =author ;
    book.price = price;
    book.sayIt = function () {
        console.log(this.name);
    };
let book1 = createBook("愿有人陪你颠沛流离","lsh",35);

对比区别:
1.没有显示的创建对象;
2.直接将属性和方法赋给了this对象;
3没有return语句;
构造模式相关的问题:

//2.1将构造函数当做函数
//当作构造函数
let Book3 = new Book("qqq","www",90);//Book的一个实例
Book3.sayName();

//当作普通函数
// new Book("ww","dd",20);
// window.sayName();

//在另一个对象的作用域调用
let b = {};
Book.call(b,"ww","dd",20);
b.sayName();

但是构造函数模式也存在弊端

let Book1 = new Book("sad","ad",90);//Book的一个实例
console.log(Book1.author);
Book1.sayName();

let Book2 = new Book("aaa","sssd",30);
console.log(Book1.sayName === Book2.sayName); //false

解决办法:
将sayName()放到外部

this.sayName = sayName;(构造函数内部)

function sayName(){console.log(this.name);}

但是,这种做法将函数放在了全局,但是它又不符合全局作用域的性质,引用类型的封装性没有意义.解决方法在下一篇会有提到.
关于这一模块的学习是很有意思的,希望大家不要觉得困难,有疑惑互相帮助.

相关文章

  • [Effective Java] (01)静态工厂方法代替构造器

    1. 创建对象 1.1 构造方法创建对象 在Java中,创建对象常用的方法是通过公有的构造方法创建;如:Boole...

  • JS基础 - 创建对象

    一、创建对象 方法一 直接创建字面量 方法二 声明对象字面变量,向对象添加新成员 二、定义对象函数 方法一 对象字...

  • 原型链相关问题

    创建对象有几种方法 使用对象字面量的方式创建 使用构造函数创建对象 使用Object.create()方法创建 原...

  • 创建对象的方法(一)

    工厂模式理解:工厂模式就是批量化生产,但是存在的缺陷就是不知道对象的类型是什么,都是Object 构造函数模式理解...

  • 更多面向对象的JavaScript

    JavaScript有不止一种方法创建对象。 简单的对象创建 最简单的创建对象的方法是用一个新的Object开始,...

  • 面向对象的JavaScript

    JavaScript有不止一种方法创建对象。 简单的对象创建 最简单的创建对象的方法是用一个新的Object开始,...

  • object.create(null) 和 {}创建对象的区别

    创建对象的方法 如果要创建一个空的对象,可以使用如下的三种方法 创建空对象的区别 要创建一个干净的空对象,应该使用...

  • js原型链基础

    创建对象的方法: 面向对象

  • JS学习——js创建对象的方法

    一.直接创建 通过键值对的形式将对象中的属性和方法连接起来 此方法是最简单的创建对象的方法,一般用于创建少数对象,...

  • JS08

    一、创建相同属性和方法的对象 1、原始方法创建对象 -- 代码重复 var obj1 = {} ...

网友评论

      本文标题:创建对象的方法(一)

      本文链接:https://www.haomeiwen.com/subject/tzyajftx.html