JS中多种方式创建对象详解_javascript技巧

1.内置对象创建

var girl=new Object();
  girl.name='hxl';
  console.log(typeof girl);

2.工厂模式,寄生构造函数模式

function Person(name){
    var p=new Object();//内部进行实例化
    p.name=name;
    p.say=function(){
      console.log('my name is '+ p.name);
    }
    return p;//注:一定要返回
}
var girl=Person('haoxioli');
girl.say();

3.构造函数创建

var Product=function(name){
    this.name=name;
    this.buy=function(){
      console.log('我衣服的牌子是'+this.name);
    }
}
  var pro=new Product('真维斯');
  pro.buy();

4.原型创建,缺点:实例中的每个属性有可能会不一样

var Role=function(){}
  Role.prototype.name={nickName:'昵称'};
  var boy=new Role();
  boy.name.nickName='刘晓兵';
  console.log(boy.name.nickName);//刘晓兵
  var girl=new Role();
  girl.name.nickName='郝晓利';
  console.log(boy.name.nickName);//郝晓利,因为实例对象可以修改原型中的引用对象的值
  console.log(girl.name.nickName);//郝晓利

5.混合模式:原型+构造,可以把不让实例修改的属性放到构造函数中,可以修改的放原型中

var Role=function(){
    this.name={nickName:'aaa'};
  }
  Role.prototype.age=30;
  var boy=new Role();
  boy.name.nickName='boy';
  console.log(boy.name.nickName);//boy
  var girl=new Role();
  girl.name.nickName='girl';
  console.log(boy.name.nickName);//boy,实例不会修改构造函数中的值
  console.log(girl.name.nickName);//girl

6.字面量形式

var cat={
    name:'lucy',
    age:3,
    sex:'母'
  };//将对象转换成字符串
  console.log(JSON.stringify(cat));//{"name":"lucy","age":3,"sex":"母"}
  var dog='{"name":"john","sex":"公"}';
  console.log(JSON.parse(dog).name);//将字符串转为对象

7.拷贝模式

function extend(tar,source){
    for(var i in source){
      tar[i]=source[i];
    }
    return tar;
  }
  var boy={name:'醉侠客',age:20};
  var person=extend({},boy);
  console.log(person.name);

8.第三方框架

//先引入包
<script src='js/base2.js'></script>
//base2框架,Base.extend及constructor都是固定用法
  var Animal=Base.extend({
    constructor:function(name){
      this.name=name;
    },
    say:function(meg){
      console.log(this.name+":"+meg);
    }
  });
  new Animal('lily').say('fish');

另一个第三方框架

<script src='js/simplejavascriptinheritance.js'></script>
//simplejavascriptinheritance框架,Class.extend及init都是固定用法
  var Person=Class.extend({
    init:function(name){
      this.name=name;
    }
  });
  var p=new Person();
  p.name='over';
  console.log(p.name);

以上这篇JS中多种方式创建对象详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索js
创建对象
javascript对象详解、javascript闭包详解、javascript详解、javascript 继承详解、javascript bind详解,以便于您获取更多的相关知识。

时间: 2024-09-20 19:32:12

JS中多种方式创建对象详解_javascript技巧的相关文章

JavaScript知识点总结(十一)之js中的Object类详解_javascript技巧

JavaScript中的Object对象,是JS中所有对象的基类,也就是说JS中的所有对象都是由Object对象衍生的.Object对象主要用于将任意数据封装成对象形式. 一.Object类介绍 Object类是所有JavaScript类的基类(父类),提供了一种创建自定义对象的简单方式,不再需要程序员定义构造函数. 二.Object类主要属性 1.constructor:对象的构造函数. 2.prototype:获得类的prototype对象,static性质. 三.Object类主要方法 1

在Node.js中使用Javascript Generators详解_javascript技巧

Generators是Javascript的一种协同程序( coroutine 简称:协程)风格,是指那些可以在执行时暂停然后又恢复的函数,该函数是在functi配以星号符号形式如function* ,函数内有些特征关键词如yield 和yield*. function* generatorFn () { console.log('look ma I was suspended') } var generator = generatorFn() // [1] setTimeout(functio

JS中的二叉树遍历详解_javascript技巧

二叉树是由根节点,左子树,右子树组成,左子树和友子树分别是一个二叉树. 这篇文章主要在JS中实现二叉树的遍历. 一个二叉树的例子 var tree = { value: 1, left: { value: 2, left: { value: 4 } }, right: { value: 3, left: { value: 5, left: { value: 7 }, right: { value: 8 } }, right: { value: 6 } } } 广度优先遍历广度优先遍历是从二叉树的

js中this用法实例详解_javascript技巧

本文实例讲述了js中this用法.分享给大家供大家参考.具体如下: 1. 指向window 全局变量 alert(this) //返回 [object Window] 全局函数 function sayHello(){ alert(this); } sayHello(); 2. 指向该对象(在全局里面this指向window,在某个对象里面this指向该对象,在闭包里面this指向window) var user="the Window"; var box={ user:'the bo

JS中setTimeout()的用法详解_javascript技巧

setTimeout setTimeout 语法例子 用 setTimeout 来执行 function 不断重复执行的 setTimeout 设定条件使 setTimeout 停止 计分及计秒的 counter clearTimeout Set flag 1. SetTimeOut() 1.1 SetTimeOut()语法例子 1.2 用SetTimeOut()执行Function 1.3 SetTimeOut()语法例子 1.4 设定条件使SetTimeOut()停止 1.5 计分及秒的co

js 中{},[]中括号,大括号使用详解_javascript技巧

一.{ } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或是函数. 如:var LangShen = {"Name":"Langshen","AGE":"28"}; 上面声明了一个名为"LangShen"的对象,多个属性或函数用,(逗号)隔开,因为是对象的属性, 所以访问时,应该用.(点)来层层访问:LangShen.Name.LangShen.AGE,当然我们也可以用数组的方式来访问,如:L

js中的this关键字详解_javascript技巧

this是Javascript语言的一个关键字. 它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用.比如, 复制代码 代码如下: function test(){ this.x = 1; } 随着函数使用场合的不同,this的值会发生变化.但是有一个总的原则,那就是this指的是,调用函数的那个对象. 下面分四种情况,详细讨论this的用法. 情况一:纯粹的函数调用 这是函数的最通常用法,属于全局性调用,因此this就代表全局对象Global. 请看下面这段代码,它的运行结果是1.

JS、jQuery中select的用法详解_javascript技巧

1.js var obj=document.getElementById(selectid); obj.options.length = 0; //清除所有内容 obj.options[index] = new Option("three",3); //更改对应的值 obj.options[index].selected = true; //保持选中状态 obj.add(new Option("4","4")); "文本",&

javascript中Array()数组函数详解_javascript技巧

在程序语言中数组的重要性不言而喻,JavaScript中数组也是最常使用的对象之一,数组是值的有序集合,由于弱类型的原因,JavaScript中数组十分灵活.强大,不像是Java等强类型高级语言数组只能存放同一类型或其子类型元素,JavaScript在同一个数组中可以存放多种类型的元素,而且是长度也是可以动态调整的,可以随着数据增加或减少自动对数组长度做更改. Array()是一个用来构建数组的内建构造器函数.数组主要由如下三种创建方式: array = new Array() array =