一、前言 介绍构造函数,原型,原型链。比如说经常会被问道:symbol是不是构造函数;constructor属性是否只读;prototype、[[Prototype]]和__proto__的区别;什么是原型链?等等问题 二、构造函数 1、什么构造函数 构造函数就是通过new关键词生成实例的函数。 js的构造函数和其他语言不一样,一般规范都是首字母大写。 首先我们来看一下这个栗子: // saucxs function Parent(age) {this.age = age; } var p = new Parent(30); con...
一、私有变量和函数 在函数内部定义的变量和函数,如果不对外提供接口,外部是无法访问到的,也就是该函数的私有的变量和函数。 <script type="text/javascript"> function Box(){ var color = "blue";//私有变量 var fn = function() //私有函数 { } } </script> 这样在函数对象Box外部无法访问变量color和fn,他们就变成私有的了: var obj = new Box(); alert(obj.color);//弹出 undefined alert(obj.fn);/...
一、对象(Object) 1.1 认识对象 对象在JS中狭义对象、广义对象两种。 广义:相当于宏观概念,是狭义内容的升华,高度的提升,范围的拓展。狭义:相当于微观概念,什么是“狭”?因为内容狭隘具体,范围窄所以称为“狭” l 狭义对象 就是用{}这种字面量的形式定义的对象,它是一组属性的无序集合var obj = {name : "小明",age : 12,sex : "男",hobby : ["足球","刺绣","打麻将"] } 上面这个对象,表示一个“人”里面有4个属性,换...
前言 学习完书面上的js知识,感觉到了,就虎里虎气的跑去面试了,结果可想而知
原型 原型是function对象的一个属性,它定义了构造函数制造出的对象的公共祖先。通过该构造函数产生的对象,可以继承该原型的属性和方法。原型也是对象提取公共属性到原型中 通过后代无法修改、增加、删除原型 constructor(系统自带隐藏属性浅粉色),构造器,返回对象的构造函数,可以手动更改 Person.prototype.LastName="ge" function Person(){this.Name="xuerongh" } var person=new Person() console.log("原型属性"+person.L...
一,函数对象__proto__:所有引用类型(函数,数组,对象)都拥有__proto__属性(隐式原型) prototype:所有函数拥有prototype属性(显式原型)(仅限函数) constructor所有prototype都有一个 constructor 属性指向关联的构造函数当我们声明一个function关键字的方法时,会为这个方法添加一个prototype属性,指向默认的原型对象,并且此prototype的constructor属性也指向方法对象。此二个属性会在创建对象时被对象的属性引用。 fun...
作为已经有了一年多经验的前端的我,时常还是不能够理解javascript原型链中对象的__proto__和prototype的指向问题,以及一些时候instanceof 检测问题。所以这次我准备深入的理解清楚javascript原型链的来龙去脉,并作出自己的总结。 首先画出我总结的一张原型链图,然后我们一步步印证图中每个指向代表的关系。1.对象和函数 创建对象的方式有很多种,字面量,构造函数和Object.create(__proto__) (比较特殊,把新对象的__proto__ 指...
一、JavaScript 中,万物皆对象!但对象也是有区别的。分为普通对象和函数对象。凡是通过 new Function() 创建的对象都是函数对象,其他的都是普通对象。Object 、Function 是 JavaScript 自带的函数对象。 var o1 = {}; var o2 =new Object(); var o3 = new f1();function f1(){}; var f2 = function(){}; var f3 = new Function('str','console.log(str)');console.log(typeof Object); //function console.log(typeof Functi...
一、原型以及原型链基础概念:实例对象的__proto__和构造函数的原型prototype指向相同 实例对象中的__proto__原型指向的是构造函数中的prototype原型 实例对象中的__proto__是原型,是浏览器使用的 构造函数中的prototype是原型,是程序员使用的 实例对象中的proto指向的是构造函数中的prototype所指向的原型对象,原型链:是一种关系,实例对象和原型对象之间的关系,这种关系是通过实例对象中的原型(proto)来联系的。改变原型链...
JavaScript面向对象JavaScript 语言使用构造函数(constructor)作为对象的模板。所谓”构造函数”,就是专门用来生成实例对象的函数。它就是对象的模板,描述实例对象的基本结构。一个构造函数,可以生成多个实例对象,这些实例对象都有相同的结构构造函数的首字母大写,区分一般函数。 函数体内部使用了this关键字,代表了所要生成的对象实例。 生成对象的时候,必须使用new命令。 构造函数内部使用严格模式 use strict,防止当做...
javaScript中,原型是常用到一种方式,它能降低内存占用,写出更高效的代码 原型常用到的则是prototype属性 JavaScript prototype 属性定义和用法 prototype 属性允许您向对象添加属性和方法 注意: Prototype 是全局属性,适用于所有的Javascript对象。 这是来自菜鸟教程的解释 现在,为验证prototype用法,我用如下代码进行测试 1 <script>2 Person.prototype.Lname = xiaohuang;3 Person.proto...
本篇文章给大家详细分析了javascript原型及原型链的相关知识点以及用法分享,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。我们创建的每个函数都有一个 prototype (原型)属性,这个属性是一个指针,指向一个原型对象,而这个原型对象中拥有的属性和方法可以被所以实例共享function Person(){ } Person.prototype.name = "Nicholas"; Person.prototype.age = 29; Person.prototyp...
前 言 上一篇博客(https://www.cnblogs.com/qdjianghao/p/10177360.html )中,我们介绍了JS中的面向对象,并详细的解释了this的指向问题。本篇博客,我们继续来学习JS的面向对象。来深入理解一下JavaScript OOP中的成员属性/方法、静态属性/方法、原型属性/方法,并且一起来探讨一下JS中的原型与原型链。 一 成员属性与成员方法 在构造函数中,通过this.属性声明。或者实例化出对象后,通过“对象.属性”追加的。都属于成员属...
一,创建对象的方法 在了解原型链之前,首先先了解一下创建对象的几种方式,介绍以下三种: <script type="text/javascript"> // 第一种方式:字面量 var o1 = {name: o1} var o2 = new Object({name: o2})// 第二种方式:构造函数 var M = function (name) { this.name = name; } var o3 = new M(o3)// 第三种方式:Object.create var p = {name: p} var o4 = Object.create(p)console.log(o1) c...
js原型链: 原型和原型链是js中的难点也是重点,个人觉得这个的确是一个很难的知识点,我也思考了很久,明白了原型和原型链会让我们在后面不管是学习还是工作都会更加高效。 上次我们说了原型的一些知识点,现在来补充一下原型链的知识点, 所有引用类型(函数,数组,对象)都拥有__proto__属性(隐式原型) 所有函数拥有prototype属性(显式原型)(仅限函数) 原型对象:拥有prototype属性的对象,在定义函数时就被创建 举个例子...