[原创]javascript prototype 对象 函数 <精简的美丽......>
在javascript中我们都知道创建一个对象使用如下代码
var x = {}
对象可以拥有属性和方法
var x = {
value : 0,
add : function(a,b){
return a + b;
}
}
而创建一个函数时,使用
var fx = function(){} <func1>
或
function fx(){} <func2>
这两种声明方式的区别是 func2 的优先级高于 func1。func2可以在函数所在文件加载后立即初始化。
对象x是没有prototype属性的,且其实例化后也没有此属性。即
var xIns = Object.create(x);
xIns.prototype 的引用是错误的。
因此,对象的方法是静态的,只能在对象声明时创建。
函数则不同。函数只要被使用(初始化或调用)后都会有prototype属性。可以使用prototype来动态的添加属性或方法。
所以,在javascript中对象可以划分为纯对象 var x = {} 与 函数对象 var obj = function(){}
而要使用prototype动态扩展一些方法或属性则需要使用函数对象。
综上所述,纯对象可以被看作是伪 prototype。
以下测试用例:
在html网页中输入
function fx(){
}
var obj = {}
在浏览器中打开网页,设置断点,然后展开this,会发现纯对象与函数对象的不同,如下图


[原创]javascript prototype 对象 函数 <精简的美丽......>的更多相关文章
- [前端JS学习笔记]JavaScript prototype 对象
一.概念介绍 prototype 对象 : 原型对象.在JavaScript中, 每一个对象都继承了另一个对象,后者称为"原型对象". 只有 null 除外,它没有自己的原型对象. ...
- javascript中对象函数继承的概念
什么是函数对象?这个对象既是通常意义上的对象,又可以加上括号直接执行的函数. 产生函数对象的方式有两种:1.通过function关键字产生:var fn = function(){};2.实例化Fun ...
- javascript Arguments对象——函数的实际参数
在javascript函数体内,标识符arguments具有特殊含义.它是调用对象的一个特殊属性,用来引用Arguments对象.Arugments对象就像数组,注意这里只是像并不是哈. javasc ...
- javascript打印对象函数
//js对象打印函数 function writeObj(obj) { var description = ""; for (var i in obj) { var propert ...
- Javascript中的函数(Function)与对象(Object)的关系
今天我们来尝试理解Function和Object.因为这个里面有些人前期可能会搞糊涂.他们之间到底是什么关系.当然也不除外当初的我. 注意:官方定义: 在Javascript中,每一个函数实际上都是一 ...
- JavaScript之prototype对象
简述prototype: 在js中,每个构造函数都有一个原型属性prototype,因为这个属性的值通常是一个对象,又叫原型对象!你不需要显式的去定义原型对象,因为每个构造函数都会一个原型属性,通常在 ...
- JavaScript中Function函数与Object对象的关系
函数对象和其他内部对象的关系 除了函数对象,还有很多内部对象,比如:Object.Array.Date.RegExp.Math.Error.这些名称实际上表示一个 类型,可以通过new操作符返回一个对 ...
- 【你不知道的javaScript 上卷 笔记7】javaScript中对象的[[Prototype]]机制
[[Prototype]]机制 [[Prototype]]是对象内部的隐试属性,指向一个内部的链接,这个链接的作用是:如果在对象上没有找到需要的属性或者方法引用,引擎就 会继续在 [[Prototyp ...
- JavaScript进阶知识点——函数和对象详解
JavaScript进阶知识点--函数和对象详解 我们在上期内容中学习了JavaScript的基本知识点,今天让我们更加深入地了解JavaScript JavaScript函数 JavaScript函 ...
随机推荐
- SQL、LINQ、Lambda 三种用法
SQL LinqToSql Lambda 1. 查询Student表中的所有记录的Sname.Ssex和Class列.select sname,ssex,class from studentL ...
- Socket编程(九)
此为网络编程的一个系列,后续会把内容补上.....
- 装饰器模式(Decorator)
转自http://blog.csdn.net/hust_is_lcd/article/details/7884320 1.认识装饰器模式 装饰模式能够实现动态的为对象添加功能,是从一个对象外部来给对象 ...
- Java [leetcode 23]Merge k Sorted Lists
题目描述: Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complex ...
- 使用BusyBox制作嵌入式Linux根文件系统
STEP 1:构建目录结构 创建根文件系统目录,主要包括以下目录/dev /etc /lib /usr /var /proc /tmp /home /root /mnt /bin /sbin ...
- Mysql加密方式
MySQL数据库的认证密码有两种方式, MySQL 4.1版本之前是MySQL323加密,MySQL 4.1和之后的版本都是MySQLSHA1加密, MySQL数据库中自带Old_Password(s ...
- 在windows10+word2010中完美使用北大方正word公式输入法总结
如果在安装输入法时遇到了无法安装的情况,请首先百度下VC运行库安装下(32位64位都安就是),然后安装北大方正word公式输入法,此时不会再提示无法安装,接着(关键)在word应用程序图标右键-> ...
- ASP.NET运行原理_2
当一个HTTP请求到服务器并被IIS接收到之后,IIS首先通过客户端请求的页面类型为其加载相应的.dll文件,然后在处理过程中将这条请求发送给能够处理这个请求的模块.在ASP.NET 3.5中,这个模 ...
- POJ 3254 poj3254 Corn Fields
题意:给出一个n行m列的草地,1表示肥沃,0表示贫瘠,现在要把一些牛放在肥沃的草地上,但是要求所有牛不能相邻,问你有多少种放法. 思路: DP[i][j]=sum(dp[i-1][k]); i表示当前 ...
- 在PHPmyadmin中删除数据库
删除数据库用sql语句 的方法: 删除数据库DROP DATABASE `数据库名称`; 删除数据库里的表DROP TABLE `数据库里的表名`;