JavaScript内核笔记02-对象、原型、this指针
来源:互联网 发布:淘宝网店开店技巧 编辑:程序博客网 时间:2024/06/05 23:05
JavaScript中没有类的概念,可以随意定义对象而不需要类。
JSON是JavaScript中对象的字面量,是对象的表示方法,通过JSON,可以减少中间变量,使代码结构更加清晰、直观。
JavaScript对象其实就是属性的集合,对象中的属性是无序的。
JavaScript对象就类似于Java语言中的Map,属性是由键值对组成。
JavaScript引擎在初始化时会构建一个全局对象,这个对象就是window。
原型(prototye),是JavaScript特有的一种概念,通过使用原型,JavaScript可以实现传统OO语言的继承,从而体现对象的层次关系。JavaScript本身是基于原型的,每个对象都
有一个prototype的属性,而prototype本身也是一个对象, 因此它本身也可以有自己的原型,这样就构成了一个链结构。
访问一个属性的时候,解析器需要从下向上的遍历这个链结构,直到遇到该属性,则返回属性对应的值,或者遇到原型为null的对象(JavaScript的基对象Object的prototype属性就
是null),如果此对象仍没有该属性则返回undefined。如下例:
//声明一个对象basefunction Base(name){this.name=name;this.getName=function(){return this.name;}}//声明一个对象childfunction Child(id){this.id=id;this.getId=function(){return this.id;}}<strong>//对象通过prototype实现继承Child.prototype=new Base("base");</strong>//实例化一个Child对象var c1=new Child("child");//c1本身具有getId方法alert(c1.getId());//由于c1从原型链上“继承”到了getName方法,因此可以访问alert(c1.getName());
this指针,在其他OO语言中表示对象本身,而在JavaScript中表示当前上下文,即调用者的引用,如下例:
//定义一个人,名字叫jakevar jake={name:"jake",age:26};//定义另外一个人,名字叫Javavar Java={name:"Java",age:100};//定义一个全局的函数对象function printName(){return this.name;}//设置printName的上下文为jake,此时的this为jakealert(printName.call(jake));//设置printName的上下文为Jave,此时的this为Javealert(printName.call(Java));
this的值并非在函数定义时确定,而是在函数被调用时确定。
声明对象的三种方式:
1、通过new操作符作用于Object对象,构造一个新对象,然后动态的添加属性,从无到有构建一个对象;
2、定义对象的“类”原型,然后使用new操作符来批量的构建新的对象;
3、使用JSON;
JSON全称为JavaScript对象表示法(JavaScript Object Notation),即通过字面量来表示一个对象。
- JavaScript内核笔记02-对象、原型、this指针
- javascript中的this指针、函数、事件、对象
- JavaScript 类、对象、this指针浅析
- JavaScript 类、对象、this指针浅析
- JavaScript 类、对象、this指针浅析
- 有关javaScript面向对象和原型笔记
- JavaScript面向对象笔记–原型
- JavaScript 学习笔记 四 this指针
- javascript学习笔记——this对象
- javascript学习笔记一:javascript原型+对象字面量等
- javascript之对象学习笔记(二)--对象原型,继承
- js中的对象/this/原型/原型链
- javascript原型继承中this
- JavaScript原型对象、原型属性、原型链
- JavaScript学习总结(三)——this、原型、javascript面向对象
- 史上最通俗易懂的关于JavaScript 的 prototype、原型继承、this指针的讲解
- Javascript原型对象
- Javascript 面向对象原型
- hdoj.1131 Count the Trees【卡特兰数列+阶乘】 2015/08/26
- NandFlash驱动设计
- Linux登陆或者su - 用户慢问题
- Java IO流->处理流->标准输入输出流:System.in&System.out
- 内存缓冲区fflush(stdin)
- JavaScript内核笔记02-对象、原型、this指针
- json字符串的类型以及在javascript中的解析方式
- 网络篇 - 04.网络数据解析(JSON)
- 黑马程序员--Java集合框架(一)
- POJ 1274--The Perfect Stall【二分图 && 最大匹配数 && 水题】
- HDU 2522 求循环小数问题
- 网络基础知识
- Redmine中的wiki支持HTMl语言
- 【JavaScript】DOM操作表格