js的对象(Object)

一、定义

ECMA-262把对象(object)定义为属性的无序集合,每个属性存放原始值、对象或函数。严格说为无特定顺序的值的数组。

二、创建

1、plainObject--> 对象字面量/对象直接量

var obj = {};

例:

var obj = {
	name: 'bob',
	age: 23,
	say: function (){
		console.log(this.name);
	}
}
//调用属性:对象.属性名
console.log(obj.name); //bob
//调用方法
obj.say(); //bob

 对象的添加:对象.属性名 = 属性值

obj.sex = "male";

对象的修改:重新赋值  对像.要修改的属性名 = 新的属性值

obj.age = 25;

对象的删除

delete obj.sex; //返回true删除成功

但是:注意--delete obj.aaa;也返回true,即delete删除对象没有的属性名也会返回true,但是delete obj; 返回false;即delete不能删除var 声明的变量,当再次访问已删除的属性,返回undefined

2、构造函数

      1)系统自带的构造函数 new Object();  new Array();  new Number();  new Boolean();  new String();  new Date(); new RegExp(); ...

注意:若构造函数没有参数,括号则不是必须的

var obj = new Object();
obj.name = "anna";
obj.age = 20;
obj.say = function (){
	console.log(this.age);
}

console.log(obj.name); //"anna";
console.log(obj.say()); //20

       2)自定义 var 对象名 = new 构造函数  (构造函数如果不用new实例化对象,就是普通函数)

注意:为了区分普通函数,自定义的构造函数一般首字母大写,且使用构造函数创建的对象,this指向该对象本身,而普通函数里面的this指向window

function Person(name,age,ball){
//var this = {
// name: name,
// age: age
}
	this.name = name;
	this.age = age;
	this.hobby  = function(){
		console.log("I like playing " + ball);
	}
//return this;
}
var person1 = new Person('John', 18, 'basketball');//this指向person1
console.log(person1.name); //John
console.log(person1.hobby()); // I like playing basketball

function a(){
	var b = 10;
	console.log(this);//Window
	console.log(this.b);//undefined
}
a();

 构造函数的内部原理:

(1)、在函数体最前面隐式声明var this = {};

(2)、执行this.xxx = xxx;

(3)、隐式的返回this

3、Object.create(原型)方法

var obj = {}
var test = Object.create(); //报错,Object prototype may only be an Object or null: undefined
var test = Object.create(obj);

var test1 = Object.create(null); //没有原型

三、遍历对象 for...in..

obj.hasOwnProperty('prop');判断obj对象是否有prop属性,返回true/false

var obj = {
	name: 'abc',
	age: 20,
	grade: [80,90,88]
}

for(var prop in obj){
	//console.log(obj.prop); undefined 
	console.log(prop+':'+obj[prop]); //for in 循环遍历对象,不能用点的形式输出属性,必须永对象[变量名]的形式
	//name:abc
	//age:20
	//grade:80,90,88
}
var str = obj.hasOwnProperty('name'); //obj.hasOwnProperty('prop');判断obj对象是否有prop属性,返回true/false
console.log(str);//true

猜你喜欢

转载自blog.csdn.net/LLL_liuhui/article/details/85990814