[JavaScript基础] 继承模式 命名空间 对象枚举

继承模式

圣杯模式

function Father(){
}
function Son(){
}

function extend(Child, Parent) {
    var F = function() {}
    F.prototype = Parent.prototype;
    Child.prototype = new F();
    Child.prototype.constructor = Child;
    Child.prototype.uber = Parent.prototype;
}

extend(Son, Father);
var son = new Son();
var father= new Father();

Yahoo YUI库

var inherit  = (function() {
  var F = function () {};
  return function(Child, Parent) {
    F.prototype = Parent.prototype;
    Child.prototype = new F();
    Child.prototype.constructor = Child;
    Child.prototype.uber = Parent.prototype;
  }
}())

命名空间

链式调用(模拟jQuery)

实现方法的连续调用,return this

var obj = {
  one : function() {
    console.log("one");
    return this; 
  },
  two: function() {
    console.log("two");
    return this; 
  },
  three: function() {
    console.log("three");
    return this; 
  }
}
obj.one().two().three();   // one two three

访问属性

var obj = {
  name : "ABC"
}
// 第一种
console.log(obj.name)
// 第二种
console.log(obj["name"])  //注:中括号里面必须是字符串

//obj.name  ====> 在执行时会隐式转化为obj["name"]
//小例子
var student = {
    number1: "TOM",
    number2: "JIM",
    number3: "ROY",
    number4: "JOHN",
    sayNumber : function(num) {
        return this["number" + num]
    }
}
console.log(student.sayNumber(1))  // TOM
....

对象枚举

for in

var obj = {
 name : "tom",
 age : 123,
 sex: "male",
 class: 3,
 sports: function() {
    console.log("baseball")
 }
}
for (var key in obj) {
 console.log(typeof key) //类型是String字符串
 console.log(obj.key) 
// 切记不要这么获取,这样是获取obj对象下的key属性,并不是对象遍历后的所有属性。
// 在底层,会隐式把obj.key ===> 转换成obj["key"]
 console.log(obj[key])  //正确,但中括号不需要加引号,因为key的类型就已经是字符串了。
}

hasOwnProperty
判断属性是否是对象自己本身的属性,返回布尔值
[object].hasOwnProperty([属性名])属性名是字符串

var obj = {
    name : "tom",
    age : 123,
    sex: "male",
    class: 3,
    sports: function() {
        console.log("baseball")
    },
    __proto__ : {
        familyName : "Brand"
    }
}
for (var key in obj) {
    if(obj.hasOwnProperty(key)) {
        console.log(obj[key])
    }
}

in
判断属性是不是对象中的。返回布尔值

sex in obj  //报错
//属性名一定要写成字符串
"sex" in obj  //正确

instanceof
检测对象是否是构造函数构造出来的,返回布尔值
语法:[Object 对象] instanceof [某构造函数 constructor]
A instanceof B
A的原型链上有没有B的原型

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 10,719评论 0 21
  •   面向对象(Object-Oriented,OO)的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意...
    霜天晓阅读 6,466评论 0 6
  • 博客内容:什么是面向对象为什么要面向对象面向对象编程的特性和原则理解对象属性创建对象继承 什么是面向对象 面向对象...
    _Dot912阅读 5,303评论 3 12
  • 等同事下班回来聊天又到这个点了,晚安。 明天计划:催款
    郑清文阅读 1,049评论 0 0
  • 2018年,我,24岁了。 我问自己,我和十四岁的自己有什么区别。 更加清楚自己渺小的如一颗砂砾,投身在茫茫人海中...
    山竹仙子阅读 1,760评论 5 4

友情链接更多精彩内容