关于对象(访问)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>01-回顾对象</title>
<script>
// 字面量定义对象
// 定义对象属性的方式:驼峰命名法,以字母、下划线、$开头,之后可以使用字母、下划线、$、数字
var student = {
name:"张三",
sex:"girl",
age:18,
study:function(){
console.log('好好记单词');
},
12:'abc',
'h5-1610':'bcd'
}

// 访问对象的属性:第一种方式 采用链式语法 . 第二种方式 [];
// 两种方式的区别,在于访问非常规的属性名的时候,或者使用变量访问对象的属性的时候,使用[]
console.log(student.name);
console.log(student[12]);
var key = 'name';
console.log(student.key);
console.log(student[key]);

console.log(student['h5-1610']);

// 总结:定义属性名称的时候,一定要规范,2.访问属性的时候建议使用 .

// 面向对象的编程,就是把现实生活中各种复杂的关系,抽象为一个具体的对象,然后,由对象之间的分工和合作来完成现实生活中的抽象

// 对象是什么:
// 1、对象其实就是单个具体的实物的抽象
// 2、对象是一个容器,容器内部封装属性(对象的状态:姓名、性别、年龄、身高、体重等),和方法(对象的行为:吃喝玩乐学)
// 3、对象是一个无序的数据集合
var array = [1,2,3];
console.log(array);
console.log(array[0]);
// 数组也是一个对象
var obj1 = {
0:'a',
1:'b',
2:'c'
}
console.log(obj1);
console.log(obj1[0]);
</script>
</head>
<body>

</body>
</html>

 

 

 

 

实例2:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>创建对象</title>

</head>
<body>
</body>
<script>

// 字面语法的对象(字典)
var xiaoming = {
name:"小明",
age:18,
run:function(){
console.log("🏃");
}
}

var xiaogang = {
name:"小刚",
age:19,
run:function(){
console.log("🚘");
}
}

// 普通的对象构造器(封装了对象创建过程的普通函数而已)
function Student(n, a, t){
var st = {
name:n,
age:a,
run:function(){
console.log(t);
}
}

return st;
}

var xiaohong = Student("夏红",18,"🚲");
xiaohong.friend = "小李";
console.log(xiaohong.name);
xiaohong.run();

// 标准对象构造器
function Person(n, a, t){
this.name = n;
this.age = a;
this.run = function(){
console.log(t);
}
}

// new的过程实际上是在堆上为对象分配内存空间,然后再调用 构造器 的时候传入构造器中表示新建的对象,最后把 这个地址 也赋给 xiaoli 这个变量
// 本质上 所有对象变量 存储的都是一个 地址值,这个地址可以找到对象在堆上的内存,从而操作对象
var xiaoli = new Person("小丽", 20, "✈️");
console.log(xiaoli.name);
xiaoli.run();

// 定论:对一个函数的调用,调用时 里面的this就是指当时的调用者
// function Person(n, a, t){
// this.name = n;
// this.age = a;
// this.run = function(){
// console.log(t);
// }
// return this;
// }

// 这里创建对象的方式是错误的,因为 Person 是直接函数调用,默认所有函数直接调用者 都是 window,所以它window 增加 name age run 等属性,所有最终返回的 this 还是指window,只是新增了一些无意义的属性而已

// var xiaoli = Person("小丽", 20, "✈️");
// console.log(xiaoli.name);
// console.log(window.name);
// xiaoli.run();

</script>
</html>

 

posted @ 2016-11-22 08:42  小确幸qh  阅读(182)  评论(0编辑  收藏  举报