1.对象:对象是JS的基本数据类型(原始类型(数字、字符串和布尔值),对象类型)。对象是一种复合值:它将很多值(原始值或者其他对象)聚合在一起,可通过名字访问这些值。

2.三类JS对象和两类属性:

内置对象:是由ECMAScript规范定义的对象或类。例如,数组(Array)、函数(Function)、日期(Date)和正则表达式(RegExp)都是内置对象

宿主对象:由JS解释器所嵌入的宿主环境定义的。客户端JS中表示网页结构的HTMLElement对象均是宿主对象,既然宿主环境定义的方法可以当成普通的JS函数对象,那么宿主对象也可以当成内置对象。

自定义对象:由运行中的JS代码创建的对象。

自有属性:直接在对象中定义的属性。

继承属性:在对象的原型对象中定义的属性。

3.对象三个特征

对象的原型:指向另外一个对象,本对象的属性继承自它的原型对象。

对象的类:是一个标识对象类型的字符串。

对象的扩展标记:指明了是否可以向该对象添加新属性

4.对象的原型:

概念:每一个JS对象(null除外)都和另一个对象相关联。"另一个"对象就是我们熟知的原型,每一个对象都从  原型对象  继承属性。

理解几句话:

1).所有通过 对象直接量 创建的对象都具有同一个原型对象,并可以通过JS代码Object.prototype获得对原型对象的引用。

对象直接量:是由若干名/值对组成的映射表,名/值对中间用冒号分隔,名/值对之间用逗号分隔,整个映射表用花括号括起来。

对象直接量例子:

var empty = {}; //没有任何属性的对象

var point = {x:0,y:0}; //两个属性

var point2 = {x:point.x,y:point.y}; //更复杂的值

var book = {

"main title" : "JavaScript", //属性名字里有空格,必须用字符串表示

"sub-title" : "the definitive guide", //属性名字里有连字符,必须用字符串表示

"for" : "all audiences", //"for"是保留字,因此必须用引号

autor : {                    //这个属性的值是一个对象

firstname : "David",    //注意,这里的属性名都没有引号

surname : "Flanagan"

}

};

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

prototype只是函数有,自定义函数、JS内部构造函数(Array, Function, String ....)本质上都是有prototype

使用{}创建对象一样,通过new Object()创建的对象也继承自Object.prototype.

通过new Array()创建的 实例对象 的 原型 就是Array.prototype, (Array,Date等都是JS内部构造函数)。

var a = new Array();

分析:这里a是一个Array类实例对象,Array是JS内部构造函数,new和构造函数调用创建一个新的实例对象,(注意,new运算符创建并初始化一个新对象。关键字new后跟随一个函数调用。这里的函数称做构造函数(constructor))。

通过new Date()创建的 实例对象 的 原型 就是Date.prototype.

var b =  new Date();

分析:这里b是一个Date类实例对象,Date是JS内部构造函数,

console.log(b.prototype); //undefined

console.log(Date.prototype); //Date{}

console.log(b.constructor); //Date()

5.对象的类:

如果定义一个原型对象,然后通过inherit()函数创建一个继承自它的对象,这样就定义了一个JS类。

function Person(name, gender) {

this.name = name;

this.gender = gender;

                   }
               Person.prototype.hello = function(){
                    alert("hello, my name is" + this.name);
                 };
               var man = new Person("张三", "男")

man是构造函数Person的一个实例(即类Person的实例),是对象型即object的类实例,自动具备 构造函数原型(Person.prototype) 上的定义的方法(hello)。
             当修改或增加构造函数prototype上的属性或方法时,它的所有实例也会同步更新。实例具备类原型上的所有方法和属性。

  

prototype属性的理解的更多相关文章

  1. 关于prototype属性的理解

    众所周知,prototype是一个属性对象,只要创建一个新函数,就会根据特定的规则为该函数创建一个prototype属性,这个属性指向函数的原型对象.在默认情况下,所有原型对象都会自动获得一个cons ...

  2. 简单理解js的prototype属性

    在进入正文之前,我得先说说我认识js的prototype这个东西的曲折过程. 百度js的prototype的文章,先看看,W3School关于prototype的介绍: 你觉得这概念适合定义js的pr ...

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

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

  4. prototype 以及 constructor 属性的理解

    1 为什么 xx.constructor.prototype 可以访问到当前对象的原型. 'str'.constructor.prototype      'str'.constructor 指向当前 ...

  5. Javascript中prototype属性详解

    在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例.但是在Javascript语言体系中,是不存在类(Class)的概念的,javascript中不 ...

  6. js中Prototype属性解释及常用方法

    1.prototype的定义 javascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用. 每一个构造函数都有一个属 ...

  7. Javascript中prototype属性的详解

    原文链接:http://www.cnblogs.com/Uncle-Keith/p/5834289.html 在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象 ...

  8. javascript中的this与prototype,原型理解

    JavaScript 函数调用 JavaScript 函数有 4 种调用方式. 每种方式的不同方式在于 this 的初始化. this 关键字 一般而言,在Javascript中,this指向函数执行 ...

  9. JS学习之prototype属性

    javascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用.以A.prototype = new B();为例, 理 ...

随机推荐

  1. 为什么需要DevOps

    过去一年以来,一批来自欧美的.不墨守陈规的系统管理员和开发人员一直在谈论一个新概念:DevOps.DevOps 就是开发(Development) 和运维(Operations)这两个领域的合并.(如 ...

  2. mysqldump 备份直接至压缩文件,提高备份及压缩时间

    1.备份及压缩分开 备份mysqldump --single-transaction -hlocalhost --all-databases --triggers --routines --event ...

  3. SDN理解:目录

    为什么? 最近一直在学习SDN方面的知识,本着"最好的学习就是分享"的精神,记录下本系列的文章,尝试更好地去理解SDN这一正当红的技术. 如何? SDN领域现在已经充斥了大量的公司 ...

  4. cookie解决 未登录加入购物车 第一次访问弹出新手引导页面

    浏览器携带cookie到服务器, 点击加入购物车-->后台检查-->是否登录(有没有sessionid) 没有登录--->secookie()返回给浏览器,把传递过来的商品id, 属 ...

  5. json的细节

    之前一直纳闷为什么在js里直接写的json数据可以不用eval()直接解析,而后台传入ajax的json数据需要eval()一下才能解析 原来是我没搞清楚json格式字符串跟json对象 var te ...

  6. jQuery的入门操作

    jQuery html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,add ...

  7. jQuery操作radio

    JQuery获取选中的radio $radio = $('input:radio[name="sex"][class="xxxx"]:checked') 获取n ...

  8. UGUI事件系统

    UGUI系统 将UI可能触发的事件分为12个类型,即EventTriggerType枚举的12个值. PointerEnter-- PointerExit-- PointerDown-- Pointe ...

  9. 在虚拟机上配置linux lab的相关经验

    最近一直在研究怎样在嵌入式开发板上移植linux嵌入式系统,但是不太想花费太多钱购买开发板.然后在网上搜索相关的arm模拟器.有qemu,skyeye,armulator等,在按照网上教程一步一步实践 ...

  10. USACO 3.1 Humble Numbers

    Humble Numbers For a given set of K prime numbers S = {p1, p2, ..., pK}, consider the set of all num ...