js - 关于this、new、原型
1、this误区
# 第三方学习
http://www.cnblogs.com/wangfupeng1988/p/3988422.html
- this不是函数自身的引用,this实际上是在函数被调用时建立的一个绑定,它指向什么,完全是由函数调用者来决定的。
看一个this和new相关的例子,也能很好的说明情况:
var Person = function(name) {
// this 指向当前创建的实例
this.name = name;
};
// 实例化一个Person(通过new实例化时,此时的this指向alice这个对象.你可以打印出来测试一下)
var alice = new Person('alice');
// 不要这么做!这个函数只会返回undefined,并且执行上下文是window(全局)对象,你无意间创建了一个全局变量name。
Person('bob'); //=> undefined
2、new、prototype的理解
#第三方教程
http://blog.csdn.net/zhoutaohenan/article/details/8641551
#幕课网:创建对象和原型链
http://www.imooc.com/video/6001
var person = function () {};
var p = new person();
很简单的一段代码,我们来看看这个new究竟做了什么?我们可以把new的过程等价于以下三步:
// 创建一个空对象
1、var p = {};
// 可以通过运行 alert( p.__proto__ === person.prototype ) 来验证。结果返回true
2、p.__proto__ = person.prototype;
// 通过这一步,p可以调用person中的属性或函数
3、person.call(p);
当我们调用p.【属性/方法】 的时候,首先p中没有这个【属性/方法】,如果没有就会去__proto__中去找,也就是Person.prototype
而这个 Person.prototype 称为 __proto__ 的原型
Person.prototype事实上还有一个原型:Object.prototype,这个原型的作用是什么呢?
我们注意到任何一个对象都具有.toString()等方法,这其实就是来源于这个原型。
而 Object.prototype 又指向了最终一个原型,就是NULL。
这个过程就是原型链

3、js面向对象:实例方法和静态方法
什么是实例方法?简单的来说就是必须实例化类对象才可以调用的方法,如:
var people= function () {};
people.prototype = {
init:function(){
alert("init")
},
show:function(){
alert("show")
}
}
//VM1008:1 Uncaught TypeError: people.init is not a function(…)
people.init()
var p = new people();
p.init();
什么是静态方法?不需要实例化类就可以直接调用,如:
var people = function(){};
people.test = function(){
alert("123");
}
people.test();
4、js的封装闭包
(function(){
// declare private variables and/or functions
return {
// declare private variables and/or functions
}
})()
5、js的设计模式
待整理...
js - 关于this、new、原型的更多相关文章
- TouchPoint.js – 可视化展示 HTML 原型点击效果
TouchPoint.js 是一个用于 HTML 原型展示的 JavaScript 库(作为UX过程的一部分),通过视觉表现用户在屏幕上的点击.TouchPoint 是高度可定制,非常适合屏幕录制,用 ...
- jquery实现点击展开列表同时隐藏其他列表 js 对象操作 对象原型操作 把一个对象A赋值给另一个对象B 并且对象B 修改 不会影响 A对象
这篇文章主要介绍了jquery实现点击展开列表同时隐藏其他列表的方法,涉及jquery鼠标事件及节点的遍历与属性操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了jquery实现点击 ...
- JS对象中的原型
对象的原型:每个对象都连接一个原型对象,并且它可以从中继承属性.所有通过对象字面量创建的对象都连接到object.prototype.当你创建一个新对象时,你可以选择某个对象作为它的原型.原型连接在更 ...
- js经典试题之原型与继承
js经典试题之原型与继承 1:以下代码中hasOwnProperty的作用是? var obj={} …….. obj.hasOwnProperty("val") 答案:判断obj ...
- 前端总结·基础篇·JS(一)原型、原型链、构造函数和字符串(String)
前端总结系列 前端总结·基础篇·CSS(一)布局 前端总结·基础篇·CSS(二)视觉 前端总结·基础篇·CSS(三)补充 前端总结·基础篇·JS(一)原型.原型链.构造函数和字符串(String) 前 ...
- JS基础——构造函数VS原型
JS是一种基于对象的语言.在使用过程中不免遇到复制对象的问题.但通常我们採用的直接赋值'obj1=obj2'这样的做法会出现数据覆盖问题. 也就是对象引用过程中引用地址一致.导致对象数据被改动的问题. ...
- JS 面向对象、prototype原型的克隆
JS中的phototype是JS中比较难理解的一个部分 本文基于下面几个知识点: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个 ...
- JS创建对象、继承原型、ES6中class继承
面向对象编程:java中对象的两个基本概念:1.类:类是对象的模板,比如说Leader 这个是泛称领导,并不特指谁.2:实例:实例是根据类创建的对象,根据类Leader可以创建出很多实例:liyi,y ...
- 《JS高程》对象&原型学习笔记
ECMA-262 把对象定义为:”无序属性的集合,其属性可以包含基本值.对象或者函数.”可以把 ECMAScript 的对象想象成散列表:无非就是一组名值对,其中值可以是数据或函数. 6.1.理解 ...
- 深入JS第一天:原型和它的小伙伴们(一)
我在这里不说定义,找点问题,再解决问题. 一.原型 Q1:这样做输出的结果是什么? jQuery= String; jQuery.prototype.say = function () { alert ...
随机推荐
- Manthan, Codefest 16 H. Fibonacci-ish II 大力出奇迹 莫队 线段树 矩阵
H. Fibonacci-ish II 题目连接: http://codeforces.com/contest/633/problem/H Description Yash is finally ti ...
- Flash&Flex大全
官方在线帮助(没标英文的都是中文) 用于 Adobe Flash Platform 的 ActionScript 3.0 参考 更多参考使这样的链接下载离线版:http://help.adobe.co ...
- \r和\n的区别
/n 是换行/r 是回车 这是两码事,换行是指移动到下一行,回车是指移动到行首,我们通常所说的“回车”其实是这两个动作的结合.
- ylbtech-LanguageSamples-NamedAndOptional(命名和可选参数)
ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-NamedAndOptional(命名和可选参数) 1.A,示例(Sample) 返回顶 ...
- jsp页面数据回显(select下拉选择框)
1.静态变量方式: <!-- 实现select标签回显 --> 1.<select name="curStatus" value="${curStatu ...
- easyui中combotree只能选子选项,父级不被选中
前言 前几天面试遇到一个需求(easyui中combotree只能选子选项,父级不被选中),回来特意整理下,大概的思想是如果该tree的节点被选中是判定一下是否有子节点,如果没有就说明是最终节点了,步 ...
- Notepad++的使用
\t 制表符. \n 新行. . 匹配任意字符. | 匹配表达式左边和右边的字符. 例如, "ab|bc" 匹配 "ab" 或者 "bc&quo ...
- 常用HTML标签的全称及描述
常用HTML标签的英文全称及简单描述 HTML标签 英文全称 中文释义 a Anchor 锚 abbr Abbreviation 缩写词 acronym Acronym 取首字母的缩写词 addr ...
- Js和html相结合的方式
目录 TOC \o "1-3" \h \z \u js和html相结合的方式. PAGEREF _Toc455386178 \h 1 08D0C9EA79F9BACE118C82 ...
- vue - dist
描述:打包后准备上线的文件(需要服务器环境才能运行!!!)