构造函数
定义构造函数
在JS中,构造函数就是用来创建对象的。
js
/*
1. 构造函数遵循大驼峰命名法。
2. 构造函数中有this关键词,this的指向后面具体分析。
3. 构造函数实际上会默认有一句 var this = {},并且将this返回。
4. 构造函数的使用必须用new关键词。
*/
function Person(firstName, lastName) {
// var this = {};
this.firstName = firstName;
this.lastName = lastName;
this.fullName = firstName + lastName;
this.sayHi = function () {
console.log('我的名字叫做:' + this.fullName);
};
// return this;
}
var person1 = new Person('邓', '旭明');
person1.sayHi();
var person2 = new Person('姬', '成');
person2.sayHi();在JS中,所有的对象都是用构造函数创建的。
js
//1.对象
//语法糖创建
var obj = {
a: 1,
b: 2,
};
//实际上
var obj = new Object(); // 创建一个空对象
obj.a = 1;
obj.b = 2;
console.log(obj);
//2. 数组
var arr = [1, 2, 3];//语法糖
var arr = new Array(1, 2, 3); // 创建一个数组
console.log(arr);
//3. 函数
function sum(a, b) {//语法糖
return a + b;
}
var sum = new Function('a', 'b', 'return a+b');//实际上
console.log(sum(1, 2));函数就是为了解决代码复用,所以封装函数的时候,一定是一个一劳永逸的事情,当调用次数大于声明次数就可以去封装。
函数的封装应当多考虑使用的时候是否便捷。
练习--创建扑克牌
创建一副扑克牌,要求:1. 创建单个牌的构造函数,具有花色 数值的属性。 2. 创建一副扑克牌的构造函数。
js
/**
* 利用构造函数创建一幅扑克牌
* @param {number} color 1 表示红桃,2 表示黑桃,3 表示方片,4 表示梅花
* @param {number} num 1-13 分别表示 A - K 14 joker 15 JOKER
*/
function Poker(color, num) {
this.color = color;//花色
this.num = num;//点数
// 打印
this.print = function () {
//区分大小王
if (this.num == 14) {
console.log('joker');
return;
}
if (this.num == 15) {
console.log('JOKER');
return;
}
var colorArr = ['♥', '♠', '♦', '♣'];
var numArr = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'];
console.log(colorArr[this.color - 1] + numArr[this.num - 1]);
}
}
/**创建一整副扑克牌 */
function Deck() {
this.pockers = [];//一整副扑克牌
//创建扑克牌
for (var i = 1; i <= 4; i++) {
for (var j = 1; j <= 13; j++) {
var poker = new Poker(i, j);
this.pockers.push(poker);
}
}
this.pockers.push(new Poker(5, 14));
this.pockers.push(new Poker(5, 15));
// 打印扑克牌
this.print = function () {
for (let i = 0; i < this.pockers.length; i++) {
this.pockers[i].print();
}
}
}
// 创建扑克牌
const deck = new Deck();
deck.print();