我们一起来读书吧 关注:142贴子:2,170
  • 1回复贴,共1

JavaScript 第二章读后感

只看楼主收藏回复

主要围绕对象讲述了JavaScript·对象中构造私有属性、私有方法、共有属性、共有方法等等,对象如何封装、继承以及面向对象中的多态。
1、构造私有和共有方法属性
var Book = function (id,name,price){
  //私有属性
  var num = 1;
  //私有方法
  function checkId(){};
  //特权方法
  this.getName = function(){};
  this.getPrice = function(){};
  this.setName = function(){};
  this.setPrice = function(){};
  //对象公有属性
  this.id=id;
  //对象公有方法
  this.copy=function(){};
  //构造器
  this.setName(name);
  this.setPrice(price);
};
//类静态公有属性(对象不能访问)
Book.isChinese = true;
//类静态公有方法(对象不能访问)
Book.resetTime = function(){
  console.log('new Tiem')
};
Book.prototype = {
  //公有属性
  isJSBook : false;
  display : function(){}
}
闭包是有权访问另一个函数作用域中变量的函数,即在一个函数中创建另一个函数。
new关键字的作用可以看作是对当前对象的this不停的赋值。如果实例化的时候不写new就相当于在全局作用域中执行了实例化函数,那么实例化就会出现问题
2、封装、继承
JavaScript中除了数字、字符串、布尔值、null和undefined之外的就是对象了,所以数组是对象,对象之间相互赋值只是更换的内存地址,内存地址所指向的值都是一样的,是会相互影响的。
new之后的变量是没有prototype的 ,只有__proto__属性,也就是实例化之后就没有prototype原型了,但是prototype是等于实例化之后的__proto__的。实例化之后的变量的__proto__中的constructor是等于实例化之前的构造函数的。
继承包括原型继承、构造函数继承、组合继承、寄生式继承、寄生组合继承(用寄生式继承父类原型)
function inheritObject(o){
function F(){}
F.prototype = o;
return new F();
}
function inheritPrototype(subClass,superClass){
var p = inheritObject(superClass.prototype);
p.constructor = subClass;
subClass.prototype = p
}
function SuperClass(name){
this.name = name;
this.colors = ["red","blue","green"];
}
SuperClass.prototype.getName = function(){
console.log(this.name)
}
function SubClass(name,time){
SuperClass.call(this,name)
this.time = time;
}
inheritPrototype(SubClass,SuperClass);
SubClass.prototype.getTime = function(){
console.log(this.time)
}
var instance1 = new SubClass("js book",2014)
var instance2 = new SubClass("css book",2013)
instance1.colors.push("black")
console.log(instance1.colors)
console.log(instance2.colors)
instance2.getName();
instance2.getTime();
4、多态
这里的多态就是同一种方法多中调用方式,实质就是上面arguments的用法,根据传参的数量不同而调用的方法不同。


IP属地:上海1楼2024-03-06 21:04回复


    IP属地:上海2楼2024-03-06 21:07
    回复