一. 对象
对象内的函数叫做方法,写在外部的函数叫做函数
对象删除方法时不能写括号:
<script>
var obj = {
name: 'a',
teach: function () {
console.log("aa");
}
}
delete obj.teach;
console.log(obj);
</script>
delete obj.teach; 后面不需要加(),加了括号会自动执行造成删不掉,输出时还能看见。
二 . indexOf()、splice()
1.indexOf():返回某个指定的字符串值在字符串中首次出现的位置。
如果没有找到匹配的字符串则返回 -1。
2.splice() 方法用于添加或删除数组中的元素。如splice(2,1):从数组第二个开始删除一个元素
实例:学生上课报道系统 , 到6个人就输出到齐
<script>
var attendance = {
student: [],
total: 6,
join: function (name) {
this.student.push(name);
if (this.student.length === this.total) {
console.log(name + "到课,学生已到齐");
} else {
console.log(name + '到课,学生未到齐');
}
},
leave: function (name) {
var idx = this.student.indexOf(name);
if (idx !== -1) {
this.student.splice(idx, 1);
}
console.log(name + "早退");
console.log(this.student);
},
classOver: function(){
this.student = [];
console.log("已下课");
}
}
attendance.join("张三");
attendance.join("李四");
attendance.join("王五");
attendance.join("赵六");
attendance.join("吴七");
attendance.join("孙八");
attendance.leave("李四");
attendance.classOver();
</script>
三.创建对象的方式
1. 对象字面量
对象字面量只是JS中一种创建对象的方法 :
var obj = {
name:"张三",
sex:"male"
}
obj.name = "李四"
声明了一个变量(obj) 将一个对象({name:... ,}) 赋值给变量(obj),这种方式称之为对象字面量(或者叫对象直接量)
2.构造函数
用系统内自带的构造函数,通过new关键字去实例化一个对象
用系统内置的new Object()来创建一个对象;
对象是通过实例化构造函数而构造的一个对象实例
var obj = new Object();
obj.name = "张三"
/用这样的方式给它添加属性
2.1自定义构造函数
和构造函数不同,在对象领域里面 使用键值对、用逗号分隔开来
var teacher ={
name = "张三",
say: function(){
console.log(this.name);
}
}
2.2 构造函数的 格式:
<script>
function Teacher(){ //为了和普通函数区分,只有它唯一使用大驼峰
this.name = "张三";
this.sex = "男";
this.smoke = function(){
console.log(I am smoking);
}
}
/这个构造函数执行之前 this不存在 所以说this此时没生成
/为了让this存在 必须要实例化它:
var teacher = new Teacher();
console.log(teacher);
</script>
2.3 构造工厂
我们通过构造函数创建出来的对象是互不影响的
<script>
function Teacher(){ //为了和普通函数区分,只有它唯一使用大驼峰
this.name = "张三";
this.sex = "男";
this.smoke = function(){
console.log(I am smoking);
}
}
var teacher1 = new Teacher();
var teacher2 = new Teacher();
teacher1.name = "李四"
console.log(teacher1,teacher2);//输出 李四 张三
</script>
构造函数就相当于一个模板工厂,我们通过模板工厂,创建一辆又一辆的车
我们通过构造函数实例化一个对象就相当于
我们通过构造工厂创建了teacher1、teacher2这两个人。
当给teacher1改名字时,不影响teacher2 。 因为他们是互不相干的两个对象
2.4 构造函数传递实参
<script>
function Teacher(name,sex,weight,course){ /形参
this.name = name; / this.name = 参数name
this.sex = sex;
this.weight = weight;
this.course = course
this.smoke = function(){
this.weight--;
console.log(this.smoke);
}
}
var teacher1 = new Teacher("张三","男","145","JS"); /输入实参
var teacher2 = new Teacher("李四","女","90","HTML");
console.log(teacher1,teacher2);//输出两个老师的对象信息
</script>
也可以这样写:
<script>
function Teacher(opt) {
this.name = opt.name;
this.sex = opt.sex;
this.weight = opt.weight;
this.course = opt.course
this.smoke = function () {
this.weight--;
console.log(this.smoke);
}
}
var teacher1 = new Teacher({
name: "张三",
sex: "男",
weight: "145",
course: "JS"
});
var teacher2 = new Teacher({
name: "李四",
sex: "女",
weight: "90",
course: "HTML"
});
console.log(teacher1, teacher2);//输出两个老师的对象信息
</script>
这样的写法就是目前的插件写法如Vue
自己创建一个插件如01.js 里面写:
function Teacher(opt) {
this.name = opt.name;
this.sex = opt.sex;
this.weight = opt.weight;
this.course = opt.course
this.smoke = function () {
this.weight--;
console.log(this.smoke);
}
}
然后我们在自己的页面里面写:
var teacher1 = new Teacher({
name: "张三",
sex: "男",
weight: "145",
course: "JS"
});
var teacher2 = new Teacher({
name: "李四",
sex: "女",
weight: "90",
course: "HTML"
});
console.log(teacher1, teacher2);//输出两个老师的对象信息
实战
1.
写个构造函数:接收数字类型的参数,参数数量不定,完成参数相加和相乘的功能
function Test(opt) {
var args = arguments;
this.add = function () {
var sum = 0;
for (var i = 0; i < args.length; i++) {
sum = sum + args[i];
}
console.log(sum);
},
this.mul = function () {
var a = 1;
for (var i = 0; i < args.length; i++) {
a = a * args[i];
}
console.log(a);
}
}
var test = new Test(2, 2, 3);
test.add();
test.mul();
2.
写一个构造车的函数:可设置车的品牌、颜色、排量,再写一个构造消费者的函数,设置用户的名字、年龄、收入,通过选择的方法实例化该用户喜欢的车,再设置车的属性。
function Car(opt) {
this.color = opt.color;
this.brand = opt.brand;
this.displacement = opt.displacement;
}
function Consumer(opt) {
this.name = opt.name;
this.age = opt.age;
this.income = opt.income;
this.selectCar = function () {
var myCar = new Car({
color: "红色",
});
console.log(this.age + "岁的" + this.name + '买了一辆颜色为' + myCar.color + "的车");
}
}
var James = new Consumer({
name: "James",
age: "20",
})
James.selectCar();
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!