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

  1. //new
  2. var person = new Object();
  3. person.name = "YuanSong";
  4. person.age = 28;
  5. //对象字面量
  6. var person = {
  7. name : "YuanSong",
  8. age : 28
  9. };
  10. //Object.create()
  11. var person = Object.create({name : "YuanSong",
  12. age : 28});
  13. //{}
  14. var person = {};
  15. person.name = "YuanSong";
  16. person.age = 28;

原型

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

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

  1. var person = {
  2. name : "YuanSong",
  3. age : 28
  4. };
  5.  
  6. alert(Object.prototype.isPrototypeOf(person)); //true
  7. alert(Object.getPrototypeOf(person)==Object.prototype); //true

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

  1. var dt=new Date();
  2. alert(Date.prototype.isPrototypeOf(dt)); //true
  3. alert(Object.getPrototypeOf(dt)==Date.prototype); //true
  1. function Person(){
  2. }
  3.  
  4. Person.prototype.name = "YuanSong";
  5. Person.prototype.age = 28;
  6. Person.prototype.job = "Software Engineer";
  7. Person.prototype.sayName = function(){
  8. alert(this.name);
  9. };
  10.  
  11. var person1 = new Person();
  12. var person2 = new Person();
  13.  
  14. alert(Object.getPrototypeOf(person1)==Person.prototype);//true
  15. alert(Object.getPrototypeOf(person1).name);//YuanSong from prototype
  16.  
  17. person1.name = "YuenSung";
  18. alert(person1.name); //"YuenSung" from instance
  19. 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. apache-jmeter-3.1的简单压力测试使用方法(下载和安装)

    博客转载https://blog.csdn.net/lan_shu/article/details/55190127 压力测试工具LoadRunner是收费的,而且操作复杂.作为开发人员当然是用apa ...

  2. 【spring boot】FilterRegistrationBean介绍

    前言 以往的javaee配置过滤器是在web.xml中配置的,如下代码 <filter> <filter-name>TestFilter</filter-name> ...

  3. JDBC_事务概念_ACID特点_隔离级别_提交commit_回滚rollback

    事务的概念 一组要么同时执行成功,要么同时执行失败的SQL语句,是数据库操作的一个执行单元! 事务开始于: 连接到数据库上,并执行一条DML语句(insert,update或delete),前一个事务 ...

  4. SDUT OJ 数据结构实验之二叉树八:(中序后序)求二叉树的深度

    数据结构实验之二叉树八:(中序后序)求二叉树的深度 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Probl ...

  5. 获取 stoken 或者id MVC写法

    //获取地址栏 painting_idvar painting_id = "{$_GET['painting_id']}"; var stoken = "{$_SESSI ...

  6. 洛谷 P3616 富金森林公园题解(树状数组)

    P3616 富金森林公园 题目描述 博艾的富金森林公园里有一个长长的富金山脉,山脉是由一块块巨石并列构成的,编号从1到N.每一个巨石有一个海拔高度.而这个山脉又在一个盆地中,盆地里可能会积水,积水也有 ...

  7. Restrictions.like() 模糊查询,以及使用DetachedCriteria查询的一般用法

    Restrictions.like() 模糊查询,以及使用DetachedCriteria查询的一般用法 2016-10-10 16:52:38                             ...

  8. ZOJ - 2401 水DP

    最近会多做点巩固基础的题目 #include<iostream> #include<algorithm> #include<cstdio> #include< ...

  9. hdu 1231 最大连续和

    题意:给定一组数,求最大的连续和,且输出开始与结尾 #include<iostream> #include<cstdio> using namespace std; int s ...

  10. 关于es6 import export的学习随笔

    记得之前的一次面试中,有个面试官问了我关于es6导入和导出的一些知识点,可惜当时对这方面没在意,只知道每次机械的import和export,也不知道为啥要这样用,现在静下心来,好好的把这块看了下,顺便 ...