美文网首页
JS基础知识 (二)--原型规则

JS基础知识 (二)--原型规则

作者: Sunny_MYJ | 来源:发表于2019-10-14 15:21 被阅读0次
构造函数

构造函数其实也是普通的函数,只是可以使用构造函数来实例化对象。
事实上,当任意一个普通函数用于创建一类对象时,它就被称作构造函数。像js的内置函数Object、Array、Date等都是构造函数。
在定义构造函数有以下几个特点:

  • 以大写字母开头定义构造函数
  • 在函数内部对新对象(this)的属性进行设置
  • 返回值必须是this,或者其它非对象类型的值
    举个栗子:定义一个简单的、标准的构造函数
function Obj(){
    this.name = 'name'
    return this // 默认有这一行 
}
var foo = new Obj() // 使用上面定义的构造函数创建一个对象实例
原型规则

js原型有5条原型规则,这5条原型规则是学习原型链的基础

  1. 所有的引用类型(数组, 对象,函数),都具有对象特性,即可自由扩展属性(除了"null"以外)
  2. 所有引用类型都有一个__proto__属性(隐式原型属性),__proto__是一个普通的对象
  3. 所有的函数都有一个prototype属性(显式原型属性),也是一个普通对象
  4. 所有的引用类型(数组, 对象,函数),__proto__属性值指向它的构造函数的prototype属性值
    5.当试图得到一个对象的某个属性时,如果这个对象本身没有这个属性,那么就会去它的 __proto__(即它的构造函数的prototype)中寻找
    示例:
// 规则1
var obj={};obj.a=100;
var arr=[];arr.a=100;
function fn (){}
fn.a = 100;
// 规则 2
console.log(obj.__proto__);
console.log(arr.__proto__);
console.log(fn.__proto__);
//  规则3
console.log(fn.prototype)
// 规则4
console.log(obj.__proto__===Object.prototype)
//规则 5
function Foo(name,age) {
    this.name = name
}
Foo.prototype.alertName=function(){
    alert(this.name)
}
var f=new Foo('zhang san')
f.printName=function(){
    console.log(this.name)
}

f.alertName()
f.printName()

补充:循环对象自身的属性

for(var i in f){
    //高级浏览器已经在for in 中屏蔽了来自原型的属性
    // 但是这里建议大家还是加上这个判断,保证程序的健壮性
    if(f.hasOwnProperty(i)){
        console.log(i)
    }
}

// 输出
 name
 printName

相关文章

  • 6.js-Web-API-DOM、BOM

    js基础知识:基于ECMA 262标准(规定基础语法、规则) --变量类型和计算--原型和原型链--闭包和作用域-...

  • JS基础知识 (二)--原型规则

    构造函数 构造函数其实也是普通的函数,只是可以使用构造函数来实例化对象。事实上,当任意一个普通函数用于创建一类对象...

  • 5-1 从基础知识到JSWebAPI

    回顾js基础知识 JS-web-API 总结 回顾js基础知识 变量类型和计算 原型和原型链 闭包与作用域 异步和...

  • JS-Web-Api

    JS基础知识,规定语法(ECMA262标准); 变量类型和计算 原型和原型链 作用域和闭包 异步和同步 JS We...

  • JS基础知识体系

    JS基础知识 1、变量类型和计算 值类型和引用类型 类型判断 逻辑运算 2、原型和原型链 class 继承 原型 ...

  • 发现•分享—2019-01-17

    文章 JS JS 异步编程六种方案 JS基础—原型对象的那些事(一) JS基础—原型对象的那些事(二) CSS 综...

  • 大白话通俗易懂的讲解javascript原型与原型链(__pro

    javascript原型和原型链是js中的重点也是难点,理论上来说应该是属于面向对象编程的基础知识,那么我们今天为...

  • javaScript中的面向对象思想之原型

    二、js的原型1、原型的概念原型是构造函数在js代码编译阶段,由系统为我们创建出来的一个对象;原型原型可以给系统构...

  • 前端开发必须知道的JS(一) 原型和继承(转载)

    前端开发必须知道的JS(一) 原型和继承 原型和闭包是Js语言的难点,此文主要讲原型及原型实现的继承,在(二)中会...

  • JS 原型链随笔(二)

    JS 原型链随笔(二) 第一篇回顾了原型的5条规则。但是在刚开始我coding中很少用到它们,因为都习惯了用一些库...

网友评论

      本文标题:JS基础知识 (二)--原型规则

      本文链接:https://www.haomeiwen.com/subject/kzkqyctx.html