JavaScript 中的所有事物都是对象:字符串、数字、数组、日期,等等。
在 JavaScript 中,对象是拥有属性和方法的数据。
属性和方法
属性是与对象相关的值。
方法是能够在对象上执行的动作。
举例:汽车就是现实生活中的对象。
汽车的属性:
car.name=Fiat
car.model=500
car.weight=850kg
car.color=white
汽车的方法:
car.start()
car.drive()
car.brake()
汽车的属性包括名称、型号、重量、颜色等。
所有汽车都有这些属性,但是每款车的属性都不尽相同。
汽车的方法可以是启动、驾驶、刹车等。
所有汽车都拥有这些方法,但是它们被执行的时间都不尽相同。
创建
1.使用原始的方式创建内置对象
var myObject = new Object();
myObject.name = “lijie”;
myObject.age = 20;
myObject.say = function(){...}
2.直接创建自定义对象
var 对象名 = {属性名1:属性值,属性名2:属性值2,…….}
*3.使用自定义构造函数创建对象
function pen(name,color,price){
//对象的name属性
this.name = name;
//对象的color属性
this.color = color;
//对象的piece属性
this.price = price;
//对象的say方法
this.say = function(){};
}
var pen = new pen(“铅笔”,”红色”,20);
pen.say();
this关键字
this单词本身就是 这个 的意思
在对象的方法中使用,代表着当前这个对象
意味着当对象调用这个方法时,方法中的this就代表着这个对象
js中self和this的区别:
1.self 指当前窗口对象 (指窗口本身,返回的对象跟windows对象是一样的)
2.this 指当前对象
<a href="javascript:self.close();" >关闭窗口</a>
<input type="button" name="" id="btn" value="这是value" onclick="alert(this.value)">
遍历
for(var i in window){
document.write(i+”----”+window[i]);
}
这种语句可以遍历对象中的所有属性或数组中的所有元素。
关于类型
测试类型:
1.typeof() //global对象的其中一个方法,typeof()
2.对象.constructor; //查看当前对象的构造函数是谁
if(arr.constructor==Array){
alert("数组"); //数组推荐用这种方法,因为typeof得到是object
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>对象</title>
</head>
<body>
<script>
// 使用系统内置的方法进行定义对象
var obj=new Object();
// 添加成员属性和方法
obj.name='小帅';
obj.age=16;
obj.chi=function(){
console.log('我正在吃饭');
}
// 自定义对象
var oBj={
name:'富贵',
age:58,
he:function(){
console.log('我正在喝饮料');
}
}
// 使用构造函数创建对象 在构造函数当中this只有实例化之后才能使用
// this 谁调用 this指向谁
function demo(n,a){
this.name=n;
this.age=a;
this.L=this;
this.wan=function(){
console.log('我正在北京玩');
console.log(this.name);
}
}
// 实例化对象 通过关键字new
var zhangsan=new demo('zhangsan',1);
// var wangwu=new demo('wangwu',1);
// console.log(wangwu.L);
// zhangsan.name="lisi";
// var N=zhangsan.name;
console.log(zhangsan.L);
// zhangsan.wan();
// console.log(N);
//============================
// 访问成员属性和方法
// var N=obj.name;
//obj.chi();
// 修改成员属性和方法
//obj.name='老帅';
//console.log(obj.name);
//===========================
// var M=oBj.name;
// oBj.he();
// console.log(M);
// oBj.name='文化';
// console.log(oBj.name);
///===========================
//删除
delete oBj.name;
console.log(oBj.name);
//========查看this的指向====================
function demo1(){
console.log(this);
}
demo1();
// 对象的遍历========================
for(i in zhangsan){
console.log(i);
}
// 查看对象构造函数
var arr=[1,2,3];
console.log(arr.constructor);
console.log(zhangsan.constructor);
console.log(obj.constructor);
</script>
</body>
</html>