javascript对象就是一组数据和功能的集合,除原始类型(string、number、boolean、null、undefined)之外,其余都是对象。 可以通过对象直接量(字面量)、new、和Object.create()(ECMAScript5)来创建对象。

        //new
var person = new Object();
person.name = "YuanSong";
person.age = 28;
//对象字面量
var person = {
name : "YuanSong",
age : 28
};
//Object.create()
var person = Object.create({name : "YuanSong",
age : 28});
//{}
var person = {};
person.name = "YuanSong";
person.age = 28;

原型

每一个JavaScript对象(null除外)都有原型,每一个对象都从原型继承属性。

所有通过对象字面量创建的对象都具有同一个原型对象,可以通过Object.prototype获得对原型对象的引用。

        var person = {
name : "YuanSong",
age : 28
}; alert(Object.prototype.isPrototypeOf(person)); //true
alert(Object.getPrototypeOf(person)==Object.prototype); //true

通过关键字new和构造函数调用创建的对象的原型就是构造函数的prototype属性的值。

var dt=new Date();
alert(Date.prototype.isPrototypeOf(dt)); //true
alert(Object.getPrototypeOf(dt)==Date.prototype); //true
        function Person(){
} Person.prototype.name = "YuanSong";
Person.prototype.age = 28;
Person.prototype.job = "Software Engineer";
Person.prototype.sayName = function(){
alert(this.name);
}; var person1 = new Person();
var person2 = new Person(); alert(Object.getPrototypeOf(person1)==Person.prototype);//true
alert(Object.getPrototypeOf(person1).name);//YuanSong from prototype person1.name = "YuenSung";
alert(person1.name); //"YuenSung" from instance
alert(person2.name); //"YuanSong" from prototype

对实例对象属性的访问,首先读取实例对象的属性,如果没有在实例上发现该属性,则读取原型的属性,当为实例添加一个属性时,就会屏蔽原型对象中保存的同名属性,阻止访问原型中的那个属性,但不会修改原型的那个属性。

对象具有属性和方法,javascript中Object类型的实例都具有都具有以下属性和方法。
1 constructor:构造函数,保存着用于创建当前对象的函数(对于上面,Object())。

2 hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中是否存在(对于上面,person.hasOwnProperty("name"))。

3 isPrototypeOf(object):用于检查对象是否是传入对象的原型(对于上面,Object.prototype.isPrototypeOf(person))。

4 propertyIsEnumerable(propertyName):用于检查给定的属性能否使用for-in来枚举(对于上面,person.propertyIsEnumerable("name"))。

5 toLocalString():返回对象的字符串表示,与执行环境地区对应。

6 toString(): 放回对象的字符串表示。

7 valueOf():返回对象的字符串、数值或布尔值表示,通常与toString()方法返回值相同。

8 toJSON():JSON.stringify(person)=>"{\"name\":\"yuansong\",\"age\":28}"

JavaScript对象 原型的更多相关文章

  1. JavaScript对象原型

    一.MDN上的解释(有点抽象) 基于原型的语言? JavaScript 常被描述为一种基于原型的语言 (prototype-based language)——每个对象拥有一个原型对象,对象以其原型为模 ...

  2. 25 JavaScript对象原型&ES5新的对象方法

    JavaScript对象原型 所有JavaScript对象都从原型继承对象和方法 日期对象继承自Date.prototype,数组继承自Array.prototype,对象构造器新建的对象Person ...

  3. JavaScript对象原型写法区别

        体现对象原型分步式写法 //原型分步式写法 //构造函数 function Person(){} //对象原型 Person.prototype.name = 'Avensatr'; Pers ...

  4. JavaScript对象原型写法详解

        体现对象原型分步式写法 //原型分步式写法 //构造函数 function Person(){} //对象原型 Person.prototype.name = 'Avensatr'; Pers ...

  5. JavaScript对象原型链的学习

    1.构造函数和原型 1.1对象的三种创建方式 字面量方式 var obj = {}; new关键字 var obj = new Object(); 构造函数方式 function Person(nam ...

  6. JavaScript对象——原型与原型链

    原型与原型链 一. 普通对象与函数对象 JavaScript 中,万物皆对象!但对象也是有区别的.分为普通对象和函数对象,Object .Function 是 JS 自带的函数对象.下面举例说明 va ...

  7. 理解 JavaScript 对象原型、原型链如何工作、如何向 prototype 属性添加新的方法。

    JavaScript 常被描述为一种基于原型的语言 (prototype-based language)——每个对象拥有一个原型对象,对象以其原型为模板.从原型继承方法和属性.原型对象也可能拥有原型, ...

  8. 再访JavaScript对象(原型链和闭包)

    一:原型链简介 JavaScript通常被描述为基于原型的语言 (从继承机制的角度)- 为了提供继承,对象(注意:区别于实例)可以拥有一个原型对象,它充当一个模板对象,它继承了方法和属性.对象的原型对 ...

  9. 🍓JavaScript 对象原型链继承的弊端 🍓

随机推荐

  1. 《javascript 高级程序设计》 笔记1 1~7章

    chapter 2 在html中使用JavaScript chapter 3 基本概念 EMCAscript 语法 变量,函数名和操作符都区分大小写. 使用var定义的变量将成为定义该变量的作用域中的 ...

  2. 51 nod 1267 4个数和为0

    1267 4个数和为0 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  取消关注 给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出& ...

  3. Java面向对象之多态(成员访问特点) 入门实例

    一.基础概念 多态的调用方式在子父类中的特殊体现. 1.访问成员变量特点: 当子父类中出现同名成员变量时. 多态调用时,编译和运行都参考引用型变量所属的类中的成员变量. 即编译和运行看等号的左边. 2 ...

  4. SQL语句优化 -- 以Mysql为例

     本文参考下面的文章:    1: [真·干货]MySQL 索引及优化实战 2:  Mysql语句的执行过程 3:  sql优化的几种方法 我将  sql语句优化分为三个方面,(此处不包括 业务逻辑的 ...

  5. 关于logging的那些坑

    python的logging日志记录模块非常强大,使用也很简单,但是特别容易出各种意外状况,打印各种出乎意料的log.最近对logging的一些原理进行了学习,再此做个记录,以备忘. 首先全面的了解一 ...

  6. 在StoryBoard对UICollectionViewCell 进行Autolayout是遇到的Xcode6.01的BUG

    使用Sb对UICollectionViewCell 的内容进行Autolayout约束时候,发现了一个Xcode6.01的BUG,就是你对UICollectionCell约束完了之后,在模拟器上现实的 ...

  7. 洛谷 P1579 哥德巴赫猜想(升级版)

    嗯... 这或许也算一道数论题吧... 题目链接:https://www.luogu.org/problemnew/show/P1579 这道题的说明好像只会扰乱人的思路....然后就是这道题的细节比 ...

  8. zip与unzip

  9. Android 生成xml文件及xml的解析

    1.生成xml文件的两种方式 (1)采用拼接的方式生成xml(不推荐使用) (2)利用XmlSerializer类生成xml文件 package com.example.lucky.test52xml ...

  10. React笔记:ref注意事项

    [一]使用ref必须用在[类型式的组件]才起作用,用在[函数式的组件]是无效的. 下面这个例子用在了[函数式的组件]上,所以是无效的: function MyFunctionalComponent() ...