<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
// 演示:代码污染
// 引入第一个JS文件
function sum(a,b) {
return a + b;
}
</script>
<script>
// 引入第二个JS文件
// 定义一个变量sum
var sum = 100;
</script>
<script>
// 调用求和函数进行求和
console.log(sum(12, 5));
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
// 演示:代码污染
// 引入第一个JS文件
// 在对象里面定义一个求和函数
var itcast = {
sum : function(a,b) {
return a + b;
}
};
</script>
<script>
// 引入第二个JS文件
// 定义一个变量sum,因为sum函数已经变成了对象的属性
var sum = 100;
</script>
<script>
// 调用求和函数进行求和
console.log(itcast.sum(12, 5));
</script>
</body>
</html>
<script>
// 演示:通过对象的直接量的形式来创建对象
// 需求:创建一个人,要求有姓名、年龄、性别、sayHello方法
// JSON结构
var p = {
// 属性
name : 'Jack',
age : 38,
gender : '妖',
// 方法
sayHello : function() {
// this 当前对象
console.log('Hello, I am: ' + this.name);
}
};
// 访问属性以及方法
console.log(p.name);
console.log(p.age);
console.log(p.gender);
p.sayHello();
</script>
<script>
// 使用构造函数的形式创建对象
// 1. 定义一个构造函数(类),构造函数其实就是普通的函数,构造函数首字母大写
function Person(name,age,gender) {
// 2. 在构造函数里面使用this.属性名=属性值的形式来初始化属性
this.name = name;
this.age = age;
this.gender = gender;
this.sayHello = function() {
console.log('Hello, I am : ' + this.name);
}
}
// 3. 使用new关键字来创建对象(实例)
var p = new Person('Jack',38,'妖');
console.log(p.name);
p.sayHello();
var p2 = new Person('Rose',18,'female');
console.log(p2.name);
console.log(p2.age);
console.log(p2.gender);
p2.sayHello();
console.log(p.name == p2.name); // false
console.log(p.sayHello == p2.sayHello); // false
</script>
// 两个对象中的sayHello方法是否相等
console.log(p.sayHello == p2.sayHello); // false
<script>
// 演示:原型的基本使用
// 定义构造函数
function Person(name) {
this.name = name;
}
var p = new Person('Jack');
console.log(p.name);
console.log(p.age);
var p2 = new Person('Rose');
console.log(p2.name);
console.log(p2.age);
</script>
<script>
// 演示:原型的基本使用
// 定义构造函数
function Person(name) {
this.name = name;
}
// 通过原型去添加一个共享属性
Person.prototype.age = 20;
var p = new Person('Jack');
console.log(p.name);
console.log(p.age);
var p2 = new Person('Rose');
console.log(p2.name);
console.log(p2.age);
</script>
// 尝试给从对象继承过来的属性赋值
p.age = 30;
// 我们发现p.age 是新值,而p2还是原来的值
console.log(p.age); // 30
console.log(p2.age); // 20
<script>
// 通过原型改造构造函数
// 1. 定义一个构造函数(类),构造函数其实就是普通的函数,构造函数首字母大写
function Person(name,age,gender) {
// 2. 在构造函数里面使用this.属性名=属性值的形式来初始化属性
this.name = name;
this.age = age;
this.gender = gender;
}
// 通过原型去添加一个共享方法
Person.prototype.sayHello = function() {
console.log('Hello, I am :' + this.name);
};
// 3. 使用new关键字来创建对象(实例)
var p = new Person('Jack',38,'妖');
console.log(p.name);
p.sayHello();
var p2 = new Person('Rose',18,'female');
console.log(p2.name);
console.log(p2.age);
console.log(p2.gender);
p2.sayHello();
console.log(p.name == p2.name); // false
console.log(p.sayHello == p2.sayHello); // false
</script>
// 使用原型来扩展原生JS对象
var arr = [10,20,30];
// 直接调用arr.sum方法,报错
console.log(arr.sum()); // sum is not a function
<script>
// 使用原型来扩展原生JS对象
var arr = [10,20,30];
// console.log(arr.sum());
// 封装一个对数组求和的方法
function sum(arr) {
// 求和
var res = 0;
for (var i = 0; i < arr.length; i++) {
res += arr;
}
return res;
}
console.log(sum(arr));
// 不好 不够智能
// 通过原型给数组添加一个sum的方法
Array.prototype.sum = Array.prototype.sum || function() {
var res = 0;
for (var i = 0; i < this.length; i++) {
res += this;
}
return res;
};
console.log(arr.sum());
console.log(arr2.sum());
</script>
1.png (79.32 KB, 下载次数: 12)
1.png (13.33 KB, 下载次数: 21)
1.png (15.48 KB, 下载次数: 25)
1.png (6.79 KB, 下载次数: 12)
1.png (14.97 KB, 下载次数: 12)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |