/*
原型也是一个对象
把共有的属性或者方法放在原型中
*/
//Person.prototype 原型
/*Person.prototype = { } 祖先*/
Person.prototype.name = "这是祖先的名称 ";
/*多个属性可以这样定义*/
Person.prototype = {
age : 20,
sex :"女",
constructor : Car
}
/*构造函数*/
function Person(sex){
this.sex =sex;
}
function Car() {
}
/*子孙类可以继承父类的属性和方法,但是子类对象不能修改父类的对象的属性,只能自己进行操作才可以实现
也就是说person.name= "这是祖先的名称 "
*/
var person = new Person();
/*constructor是对象的构造函数*/
console.log(person.constructor)
Animal.prototype.name = "这是个动物的类";
function Animal() {
/*这里可以理解为放对象没有这个属性的时候才会去原型中查找,其中也可以改变原型的指向*/
// var this ={
// _proto_ : Animal.prototype
// }
}
var animal = new Animal();
//其中注意一下两种写法
Animal.prototype.name = " 这是另外一个动物的类"; //打印Animal.prototype.name = " 这是另外一个动物的类";这个可以这样理解修改的是属性
Animal.prototype = {
name : " 这是另外一个动物"
}
// Animal.prototype.name = " 这是个动物的类";
/*创建对象*/
var obj = Object.create(原型);
/*call 和apply的作用*/
function Person1(name, age) {
/*其中这里的this == object*/
this.name = name;
this.age = age;
}
/*这里的Student调用Person1的函数*/
function Student (name, age ,grade) {
/*Person1.apply(this , [name, age]);*/
Person1.call(this ,name,age);
this.grade =grade;
}
var student = new Student('JJJJJ',20,1);
var person1 = new Person1('ZK',100);
var object = {
}
/*call的作用是:改变this的指向*/
Person1.call(object ,'zhe',52);
js 原型和call()总结
最新推荐文章于 2020-08-17 15:34:07 发布