1、原型模式创建对象

(1)第一种
function Newperson(){
    
}

var person2 = new Newperson();

Newperson.prototype.name = 'tom';
Newperson.prototype.age = 22;
Newperson.prototype.job = 'teacher';
Newperson.prototype.sayName = function(){
    alert(this.name);
}

var person1 = new Newperson();

console.log(person1.constructor);//Newperson()

console.log(person2.constructor);//Newperson()

(2)第二种

function Person(){
    
}

var friend = new Person();

//用一个包含所有属性和方法的对象字面量重写原型对象,相当于重写了Newperson的prototype对象
Person.prototype = {
        //constructor:Person,//添加这句,可以使 person.constructor 指向 Person
        name:'tom',
        age:22,
        job:'teacher',
        sayName:function(){
            alert(this.name);
        }
}

var person = new Person();

console.log(friend.constructor);//Person()
console.log(person.constructor);//Object()

2、寄生构造函数模式创建对象
    //eg1
    function Animal(name, age, voice){
        var o = new Object();
        o.name = name;
        o.age = age;
        o.voice = voice;
        o.sayVoice = function(){
            return this.voice;
        }
        return o;
    }
    
    var cat = new Animal('喵咪', 2, 'miao');
    console.log(cat.name);//喵咪
    console.log(cat.sayVoice());//miao
    
    //eg2
    function Specialarray(){
        var values = new Array();
        values.push.apply(values, arguments);
        values.toPipedString = function(){
            return this.join('|');
        }
        return values;
    }
    
    var array1 = new Specialarray('a', 'b', 'c');
    console.log(array1.toPipedString());//a|b|c
    console.log(array1.constructor);//Array()
    console.log(array1 instanceof Object);//true

  这种模式创建的对象与构造函数或者构造函数的原型属性之间没有关系,不能依赖instanceof 来确定对象类型。建议可以在使用其他模式的情况下不要使用这种模式。

javascript 创建对象的更多相关文章

  1. Javascript 创建对象方法的总结

    最近看了一下<Javascript高级程序设计(第三版)>,这本书很多人都推荐,我也再次郑重推荐一下.看过之后总得总结一下吧,于是我选了这么一个主题分享给大家. 使用Javascript创 ...

  2. javascript创建对象的几种方式

    javascript创建对象简单的说,无非就是使用内置对象或各种自定义对象,当然还可以用JSON:但写法有很多种,也能混合使用.主要为下面几种:1.对象字面量的方式 person={firstname ...

  3. javascript创建对象的方法总结

    Javascript创建对象 最简单的方法:创建object实例. var person=new Object(); person.name="Joey";person.age=2 ...

  4. javascript创建对象的相关问题

    javascript创建对象的方法有很多种,一般来说,推荐使用对象字面量来创建对象. 对象构造函数捕捉 使用new Object来创建对象,可能会带来一些问题: var o = new Object( ...

  5. JavaScript创建对象(三)——原型模式

    在JavaScript创建对象(二)——构造函数模式中提到,构造函数模式存在相同功能的函数定义多次的问题.本篇文章就来讨论一下该问题的解决方案——原型模式. 首先我们来看下什么是原型.我们在创建一个函 ...

  6. Javascript 创建对象的三种方法及比较【转载+整理】

    https://developer.mozilla.org/zh-CN/docs/JavaScript/Guide/Inheritance_and_the_prototype_chain 本文内容 引 ...

  7. JavaScript创建对象的6种方式

    JavaScript创建对象简单的说,无非就是使用内置对象(Object)或各种自定义对象,当然还可以用JSON,但写法有很多种,也能混合使用. 1.对象字面量的方式 person = {name : ...

  8. JavaScript 创建对象的七种方式

    转自:xxxgitone.github.io/2017/06/10/JavaScript创建对象的七种方式/ JavaScript创建对象的方式有很多,通过Object构造函数或对象字面量的方式也可以 ...

  9. Javascript创建对象几种方法解析

    Javascript创建对象几种方法解析 Javascript面向对象编程一直是面试中的重点,将自己的理解整理如下,主要参考<Javascript高级程序设计 第三版>,欢迎批评指正. 通 ...

  10. JavaScript创建对象的几种 方式

    //JavaScript创建对象的七种方式 //https://xxxgitone.github.io/2017/06/10/JavaScript%E5%88%9B%E5%BB%BA%E5%AF%B9 ...

随机推荐

  1. MVC过滤器的用法

    APS.NET MVC中的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前前后后如果想再加一些额外的逻辑处理.这时候就用到了过滤器. 在Asp.netMvc中当你有以下及类似 ...

  2. Mac下JDK安装配置

    首先可以通过官网下载JDK:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html,至于下什么版本根 ...

  3. HoverTree项目添加了查看留言列表功能

    HoverTree项目添加了查看留言列表功能 页面:HoverTreeWeb项目下hvtpanel/usermessage/messagelist.aspx 添加留言页面:addmessage.asx ...

  4. iOS阶段学习第28天笔记(UIView的介绍)

    iOS学习(UI)知识点整理 一.关于UIVIew 的介绍 1)概念:UIView 是用于装载并展示各类控件的大容器,是iOS中所有UI控件的基类 2)UIView  初始化实例代码 UIView * ...

  5. avalon.js 1.4.6简单列表数据绑定ms-repeat ms-click

    1.列表数据绑定 <html> <head> <meta charset="UTF-8"> <meta name="viewpo ...

  6. LeetCode122:Best Time to Buy and Sell Stock II

    题目: Say you have an array for which the ith element is the price of a given stock on day i. Design a ...

  7. hibernate----component-entity (人-地址-学校)

    package com.ij34.dao; import javax.persistence.*; @Entity @Table(name="school_inf") public ...

  8. HTTP错误大全 404 200 501 502 505

    HTTP错误 大全 403 401 400 404 304 200 HTTP 400 - 请求无效 HTTP 401.1 - 未授权:登录失败 HTTP 401.2 - 未授权:服务器配置问题导致登录 ...

  9. socket.io,远程控制你的幻灯片

    原文:http://www.cnblogs.com/xiezhengcai/p/3964455.html 中秋休息了几天,今天又开始捣鼓socket.io了.今天的任务是通过socket.io控制你的 ...

  10. Java的自动递增和递减

    和C 类似,Java 提供了丰富的快捷运算方式.这些快捷运算可使代码更清爽,更易录入,也更易读者辨读.两种很不错的快捷运算方式是递增和递减运算符(常称作"自动递增"和"自 ...