1.创建对象的三种方式:
第一种构造法:new Object
var a = new Object(); a.x = 1, a.y = 2;
第二种构造法:对象直接量
var b = { x : 1, y : 2 };
第三种构造法:定义类型
function Point(x, y){ this.x = x; this.y = y; } var p = new Point(1,2);
2.访问对象
访问对象的属性
中括号表示法:hero['name']。、
点号表示法:hero.name。
如果访问的属性不存在,会返回undefined。
访问对象的方法
方法名后加一对括号:hero.say()。
像访问属性一个访问方法:hero['say']()。
3.删除属性与方法
//创建一个空对象 var hero = {}; //为hero对象增加属性和方法 hero.name = "JavaScript"; hero.value = "helloworld"; hero.sayName = function(){return "hello " + hero.name;}; //测试 alert(hero.name); //output javascript alert(hero.sayName()); //output hello javascript //删除hero对象的name属性 delete hero.name; //测试 alert(hero.sayName()); //output hello undefined
4.使用this值
//创建一个空对象 var hero = {}; //为hero对象增加属性和方法 hero.name = "javascript"; hero.value = "helloworld"; hero.sayName = function(){return "hello " + this.name;}; //测试 alert(hero.name); //output javascript alert(hero.sayName()); //output hello javascript
总结:
① 这里的this实际上引用的是“这个对象”或“当前对象”。
② this的用法,大部分人的使用问题都比较多。所以不建议过多使用!
5.内建对象
内建对象大致上可以分为三个组:
① 数据封装类对象 —— 包括Object、Array、Boolean、Number和String。这些对象代表着javascript中不同的数据类型,并且都拥有各自不同的typeof返回值,以及undefined和null状态。
② 工具类对象 —— 包括Math、Date、RegExp等用于提供遍历的对象。
③ 错误类对象 —— 包括一般性错误对象以及其他各种更特殊的错误类对象。它们可以在某些异常发生时帮助我们纠正程序工作状态。
6.Object对象
Object是javascript中所有对象的父级对象,这意味着所有对象都继承于Object对象。
创建一个空对象:
var object = {}; var obj = new Object();
7.Array对象
Array对象用于在单个的变量中存储多个值。
创建一个空Array对象:
var object = {}; var obj = new Array();
例如1:
//反转字符串示例 //定义一个字符串 var str = "a,b,c,d,e,f,g"; //利用String对象的split()方法,将字符串切割成一个数组 var arr = str.split(","); //利用Array对象的reverse()方法,将数组中元素的顺序颠倒。 arr = arr.reverse(); //测试打印 alert(arr.toString());
8.String对象
String对象与基本的字符串类型之间的区别:
var str = "hello"; var obj = new String("world"); alert(typeof str); //typeof string alert(typeof obj); //typeof object
例如1:
//判断字符串是否包含指定字符串示例 //定义两个要判断的字符串 var str = "abcdefg"; var substr = "efg"; /* * 定义判断字符串是否包含指定字符串的函数 * * 第一个参数:要判断的字符串 * * 第二个参数:指定的字符串 */ function sub(str,substr){ //将判断的字符串定义成String对象 var string = new String(str); //截取判断的字符串 var result = string.substr(string.indexOf(substr),substr.length); /* * 判断截取后的字符串是否为空 * * 为空,说明不包含指定字符串 * * 不为空,说明包含指定字符串 */ if(result==substr){ return true; }else{ return false; } } alert(sub(str,substr));
9.原型(prototype)
函数本身也是一个包含了方法和属性的对象。而现在我们要研究的就是函数对象的另一个属性 —— prototype。
利用原型添加方法与属性
利用自身属性重写原型属性
扩展内建对象
利用原型添加方法与属性
下面创建一个新的函数对象,并设置一些属性和方法:
function Hero(name, color){ this.name = name; this.color = color; this.whatareyou = function(){ return "I am a " + this.color + " " + this.name; } } var hero = new Hero("javascript","red"); alert(hero.whatareyou()); //output I am a red javascript
为上面的Hero函数对象增加一些属性和方法:
Hero.prototype.price = 100; Hero.prototype.rating = 3; Hero.prototype.getInfo = function(){ return "Rating: " + this.rating + " , Price: " + this.price; } alert(hero.getInfo()); //output Rating: 3 , Price: 100
上面的方式,也可以这样去做:
Hero.prototype = { price : 100, rating : 3, getInfo : function(){ return "Rating: " + this.rating + " , Price: " + this.price; } };
利用自身属性重写原型属性
如果对象的自身属性与原型属性同名该怎么办呢?答案是对象自身属性的优先级高于原型属性。