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. crontab 实现定时脚本执行完毕再执行下一次

    0 4 * * 1 flock -xn /tmp/oneSendTemp.lock -c /home/check_a/h_demand.sh > /dev/null 2>&1

  2. 自己写的一个jQuery轮播插件

    大概是四月初开始写的,中间停了有一个月吧.这是我在Github的第一个项目.项目地址:https://github.com/linzb93/jquery.slide.js. 轮播应该是最好写的插件了, ...

  3. java-读取属性文件

    Property类: public static Properties loadLocalProperties(String fileName) { Properties property = new ...

  4. google的作恶与不作恶

    Google刚刚出现时,那时互联网还似桃花源,路不拾遗夜不闭户,最多升级升级病毒库.Google的发展,从商业模式上带来了广告对互联网无孔不入的渗透,如今Google.百度.阿里等各大巨头都有自己的广 ...

  5. jquery 自动触发事件 trigger

    trigger() 栗子: 需求:我们在做二级联动的时候往往会遇到这样的需求,后台管理端页面加载完成后显示用户的省份,城市,并且可以对用户的省份,城市信息可以修改 如果只是简单的显示 你完全可以直接放 ...

  6. 【IE6的疯狂之七】样式中文注释后引发失效

    这是IE6 出现的奇怪现象.这是由于css 和html 的编码不同所引致. 满足下面条件就会引起 注释下面的样式不起作用:1. css有中文注释2. css为ANSI编码3. html为utf-8编码 ...

  7. Python 清理HTML标签类似PHP的strip_tags函数功能(二)

    没有发现Python 有现成的类似功能模块,所以昨天写了个简单的 strip_tags 但还有些问题,今天应用到采集上时进行了部分功能的完善, 1. 对自闭和标签处理 2. 以及对标签参数的过滤 fr ...

  8. PyQt界面编程应用与实践

    一个典型的GUI应用程序可以抽象为:主界面(菜单栏.工具栏.状态栏.内容区域),二级界面(模态.非模态),信息提示(Tooltip),程序图标等组成.本篇根据作者使用PyQt5编写的一个工具,介绍如何 ...

  9. Python学习笔记——基础篇【第七周】———FTP作业(面向对象编程进阶 & Socket编程基础)

    FTP作业 本节内容: 面向对象高级语法部分 Socket开发基础 作业:开发一个支持多用户在线的FTP程序 面向对象高级语法部分 参考:http://www.cnblogs.com/wupeiqi/ ...

  10. [Poi2015]

    [POI2015]Łasuchy 一看以为是sb题 简单来说就是每个人获得热量要尽量多 不能找别人 首先这道题好像我自己找不到NIE的情况 很容易想到一个优化 如果一个数/2>另一个数 那么一定 ...