zoukankan      html  css  js  c++  java
  • JavaScript 对象详解

    一、什么是对象?

    1.简介

      ECMA-262将对象(object)定义为"属性的无序集合,每个属性存放一个原始值、对象或函数"(unordered collection of properties each of which contains a primitive value, object, or function)。这意味着对象是无特定顺序的值的数组。在ECMAScript中,对象由特性(Attribute)构成,特性可以是原始值,也可以是引用值。如果特性存放的是函数,它将被看作对象的方法(Method),否则该特性被看作属性(Property)。

    2.本地对象(native object)

      Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError

      

    3.内置对象(built object)

      Global、Math

      

    4.宿主对象(host object)

      BOM和DOM对象、用户自定义对象

    二、对象的创建

    1.字面量方式

    var Person = {}; //创建一个对象
    Person.name = 'niki'; //添加属性并赋值
    Person.age = 23; //添加属性并赋值
    
    //添加一个方法
    Person.speak = function() {
        console.info("my name is " + this.name);
    };
    
    Person.speak(); //调用方法

    2.利用function

     方式一:无参构造函数

    //声明一个Person的function
    function Person() {}
    
    var person = new Person(); //实例化一个对象
    person.name = 'niki'; //定义属性
    person.age = 23; //定义属性
    
    //定义成员方法
    person.speak = function() {
        console.info("my name is " + this.name);
    };
    
    person.speak(); //调用实例方法

    方式二、有参构造函数

    //声明一个Person的function
    function Person(name,age){
        this.name = name;//赋值给属性
        this.age = age;//赋值给属性
    
        //定义对象方法
        this.speak = function(){
            console.info("my name is " + this.name);
        };
    }
    //实例化对象
    var person = new Person('niki',23);
    person.speak();//调用实例方法

    3.Object对象创建

     方式一:

    //利用Object创建一个对象实例
    var person = new Object();
    person.name = 'niki'; //属性赋值
    person.age = 23; //属性赋值
    
    //定义方法
    person.speak = function(){
        console.info("my name is " + this.name);
    };
    person.speak();//调用实例方法

    方式二:

    var person = Object.create(null); //创建一个空的person对象
    person.name = 'niki'; //属性赋值
    person.age = 23; //属性赋值
    
    //定义方法
    person.speak = function(){
        console.info("my name is " + this.name);
    };
    person.speak();//调用实例方法
  • 相关阅读:
    开博说两句
    学习总结 (持续更新)
    ip代理 120203
    [vs2005]关于预编绎网站的问题[已预编译此应用程序的错误]
    JAVA类基础
    集合类和泛型
    IO流——字符流
    多线程和包
    多态和内部类
    抽象类与接口
  • 原文地址:https://www.cnblogs.com/mangoniki/p/5485351.html
Copyright © 2011-2022 走看看