JS的prototype
初步理解:
1
2
3
4
|
function name(obj){ alert(obj) //"uw3c" } name( "uw3c" ) |
1
2
3
4
5
|
function name(obj){ alert(obj) //"uw3c" } var test = new name( "uw3c" ) test(); |
1
2
3
4
5
|
function uw3c(){ } var test = new uw3c(); alert( typeof uw3c); //function alert( typeof test); //object |
1
2
3
4
5
6
|
function name(){ alert(JSON.stringify(name.prototype)) //{},是个空对象 } name(); var test = new name(); alert(JSON.stringify(test.prototype)) //undefined,不存在这个对象 |
什么是prototype:
1
2
3
4
5
|
var function { prototype:prototype{ constructor:constructor == function } } |
prototype的作用:
1
2
3
4
5
|
function uw3c(){ } uw3c.prototype.name = "a" ; var test = new uw3c(); alert(test.name) //"a"; |
1
2
3
4
5
6
7
|
var name = "js" ; function uw3c(name){ alert( this .name); //"css" } uw3c.prototype.name = "css" ; var test = new uw3c(); test(); |
1
2
|
var test={}; uw3c.call(test); |
第二步将该对象(test)内置的原型对象设置为构造函数(就是uw3c)prototype 属性引用的那个原型对象。
第三步就是将该对象(test)作为this 参数调用构造函数(就是uw3c),完成成员设置等初始化工作。
其中第二步中出现了一个新名词就是内置的原型对象,注意这个新名词跟prototype对象不是一回事, 为了区别我叫它inobj,inobj就指向了函数uw3c的prototype对象。在uw3c的prototype对象中出现的任何属性或者函数都可以在test对象中直接使用,这个就是JS中的原型继承了。
prototype是继承还是克隆:
1
2
3
4
5
6
|
function uw3c(){ } uw3c.prototype.name = "b" ; var test = new uw3c(); alert(JSON.stringify(test)); //{} alert(test.name); //"b" |
prototype的优点:
1
2
3
4
5
6
7
|
function uw3c(name){ alert( "姓名:" + name + ",年龄:" + this .age + ",性别:" + this .sex); } uw3c.prototype.age = 15; uw3c.prototype.sex = "man" ; var test1 = new uw3c( "css" ); //姓名:css,年龄:15,性别:man var test2 = new uw3c( "js" ); //姓名:js,年龄:15,性别:man |
JS的prototype的更多相关文章
- 深入理解js的prototype以及prototype的一些应用
上一篇讲了js的prototype概念,在这里回顾一下prototype的定义: prototype是函数的一个属性,并且是函数的原型对象.引用它的必然是函数,这个应该记住. 但是,很奇怪,各位看官, ...
- 简单理解js的prototype属性
在进入正文之前,我得先说说我认识js的prototype这个东西的曲折过程. 百度js的prototype的文章,先看看,W3School关于prototype的介绍: 你觉得这概念适合定义js的pr ...
- Bom和Dom编程以及js中prototype的详解
一.Bom编程: 1.事件练习: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...
- JS的prototype和__proto__(含es6的class)
JS的prototype和__proto__(含es6的class) 一.prototype和__proto__的概念 prototype是函数的一个属性(每个函数都有一个prototype属性),这 ...
- JS的prototype和__proto__、constructor
看了JS的prototype和__proto__这篇文章,才感觉很清晰了,对于原型这块,以前经常把这些属性弄不清楚, 明白了之后保存下整理下: prototype: 是函数的一个属性(每个函数都有一个 ...
- js的prototype的详解(1)
一.什么是JavaScript中对象的prototype属性 JavaScript中对象的prototype属性,是用来返回对象类型原型的引用的.我们使用prototype属性提供对象的类的一组基本功 ...
- JS 测试 Prototype
JS 测试 Prototype 测试 JavaScript 框架库 - Prototype 引用 Prototype 如需测试 JavaScript 库,您需要在网页中引用它. 为了引用某个库,请使用 ...
- 复习一下js的prototype 属性
<html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</t ...
- 如何使用 js 扩展 prototype 方法
如何使用 js 扩展 prototype 方法 expand prototype function enhancedLog(msg = ``) { // this.msg = msg; enhance ...
- js & object & prototype & __proto__ & prototype chain
js & object & prototype & proto & prototype chain constructor prototype === instance ...
随机推荐
- map,hash_map, hash_table, 红黑树 的原理和使用
在刷算法题的时候总是碰到好多题,号称可以用hash table来解题.然后就蒙圈了. 1.首先,map和hash_map的区别和使用: (1)map底层用红黑树实现,hash_map底层用hash_t ...
- 慕课网-Java入门第一季-7-1 如何定义 Java 中的方法
来源:http://www.imooc.com/code/1577 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块. 一般情况下,定义一个方法的语法是: 其中: 1. 访问修饰符:方法 ...
- git 使用入门
参考教程: 廖雪峰的官方网站 MY UBUNTU 安装: sudo apt-get install git GIT 理解: 选定的目录为git的工作区.该目录下的任何改动,git都会记录为工作区的修改 ...
- 解决sublime text3 文件名,小框框的办法
解决sublime text3 文件名,小框框的办法 之前一直都是用的英文命名的文件夹,到前几天才发现,用中文,来命名文件夹出现了乱码问题. 今天晚上,自己也在网上去百度了很多方案,好像大部分都不太有 ...
- 整理一下自己用到的SVN几个命令
第一步 svn co 代码分支(http://yyyyyyyyyyyyyyyy) 将开发给的代码分支地址中的代码拉到测试机中 第二步 cd /目录 进入需要拉代码的目录 然后 ll 查看目录下的 ...
- jquery.validate[.unobtrusive]和Bootstrap实现tooltip错误提示
类似的文章园子里已有,请看这里,个人感觉稍显复杂,日前也打算写一个简单的给项目用,一些关键点记录于此.最终效果如下: 后端使用Asp.net mvc5,前端框架有:jquery.validate.jq ...
- Orcle基本语句(四)
--显示员工的编号,姓名,工资,工资级别,所在部门的名称;(使用emp表) SELECT * FROM emp; SELECT * FROM salgrade; SELECT * FROM dept; ...
- js实现继承的两种方式
这是面试时面试官会经常问到问题: js的继承方式大致可分为两种:对象冒充和原型方式: 一.先说对象冒充,又可分为3种:临时属性方式.call().apply(): 1.临时属性方式: 当构造对象son ...
- Google黑板报: 数学之美系列(网上找的原链接)
转载地址:http://blog.sina.com.cn/s/blog_47cccb02010009u0.html 系列一 -- 统计语言模型 http://googlechinablog.com/2 ...
- 解析JSON字符串
import java.util.ArrayList; import java.util.List; import org.json.JSONArray; import org.json.JSONOb ...