javascript对象

对象是javascript中的基本数据类型,
javascript中对象的基本用法有create、set、query、delete、test、enumerate(枚举)它的属性
属性包括名字和值。属性名可以是包括空字符串在内的任意字符串,但对象中不能存在两个同名的属性

1、对象可以分为以下几类:

内置对象(数组、函数、日期、正则表达式)
宿主对象(搜嵌入的宿主环境提供的对象)
自定义对象()

2、对象的属性可以分为:

自有属性(直接在对象中定义的属性)
继承属性(在对象的原型对象中定义的属性)

一、创建对象

1、对象直接量

var empty = {};
var book = {
      title:"javascript",
      author:"Zakas",
      "for":"programmer"//for为关键字必须加引号(ecam3),最好给所有属性都加引号
      }

2、通过new创建对象

new运算符创建并初始化一个新对象。关键词new后面跟一个函数调用。这里的函数称为构造函数(constructor)。构造函数用来初始化一个新创建的对象。Javascript语言核心中的原始类型都包含内置的构造函数

var o = new Object();
var a = new  Array();
var d = new Date();
var  r = new RegExp("js") ;

除了使用原始类型的构造函数创建对象,也可以使用自定义的构造函数来创建对象,见方法5

3、原型

function Dog(){};
Dog.prototyp.name = "wang cai";
Dog.prototype.eat = function(){
    alert(this.name + "love eat!");
}
var wangcai = new Dog();
wangcai.eat();

4、Object.create()

ECMAScript5定义了一个名为Object.create()的方法,他创建一个新对象,其中第一个参数是这个对象的原型。第二个可选的参数可以对独享的属性进行进一步描述。
Object.create()是一个静态函数,而不是提供给某一个对象调用的方法。

var o1 = Object.create({x:1,y:2});

可以通过传递参数null来创建一个没有原型的对象

var o3 = Object.create(Object.prototype);//o3和{}、new Object()一样

但是在ECMAScript3中,没有这样的方法,我们可以创建一个新的函数inherit()来解决这个问题

function inherit(p){
    (p == null) && thirow TypeError();
    Object.create && return Object.create(p);
    var t = typeof p;
    if(t !== "object" && t !== "function") throw TypeError();
    function f(){}; //使用第三种方法引用原型来创建新的对象,
    f.prototype = p;//并使其继承对象p
    return new f();
}

5、构造函数

用function来模拟午无参构造函数:

function Person(){};
var person = new Person();
person.name = "Mark";
person.age = "25";
person.work = function(){
            alert(person.name);
    }
person.work();

用function来模拟含参构造函数

function Pet(name,age,hobby){
        this.name = name;
        this.age = age;
        this.hobby = hobby;
        this.eat = function(){
            alert(this.name);
    }
}
var maidou = new Pet(“麦兜”,25,"coding");
maidou.eat();

6、使用工厂方式来创建(内置对象)

var dog = {};
dog.name = "wangwang";
dog.age = 3;
dog.say = function(){
    alert('我是'+dog.name);
}
dog.work();

7、使用混合模式(最常见)

function Car(name.price){
    this.name = name;
    this.price = price;
}
Car.prototype.sell = function(){
    alert(this.name);
}
var aodi = new Car("奥迪",27);
aodi.sell();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值