JavaScript中Function函数与Object对象的关系


Posted in Javascript onDecember 17, 2015

Function是javascript里最常用的一个概念,javascript里的function是最容易入手的一个功能,但它也是javascript最难理解最难掌握的一个概念。

今天我们来尝试理解Function和Object.因为这个里面有些人前期可能会搞糊涂.他们之间到底是什么关系.当然也不除外当初的我.

注意:官方定义: 在Javascript中,每一个函数实际上都是一个函数对象.

我们先来看最简单的两个代码,也是最容易理解的.

function fn(){}
var obj = {}
console.log(fn instanceof Function)//true
console.log(obj instanceof Object)//true
console.log(fn instanceof Object)//true
console.log(obj instanceof Function)//false

前面两个打印的效果,大家都容易理解.后面 fn instanceof Object 是为true.这里也是一样,从函数的定义来说: 在javascript中一切函数实际都是函数对象. 所以为true就不奇怪了.obj instanceof Function 为false,当然不奇怪了.因为他是一个对象,不是函数.

我们再来看一个代码

console.log(Function instanceof Object); // true
console.log(Object instanceof Function); // true

代码很简单.运行结构两个都是为true,为什么呢? 第一个用函数的定义来说,(javascript中函数实际也是一个函数对象),当然为true,那第二个呢?对象也是函数?

Object也是函数.因为Object的结构是function Object(){native code}.

这种形式,很清晰的就是声明的一个Object函数,当然就是函数了,所以两个都是为true.

他们两个Function和Object函数实现代码,那当然是不一样了.他们是怎么实现的,那我们就不去详细琢磨了,如果想琢磨的,就可以了解浏览器的相关知识了.

ps:$(function(){})和$(document).ready(function(){})

document.ready和onload的区别——JavaScript文档加载完成事件

页面加载完成有两种事件

一是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件)

二是onload,指示页面包含图片等文件在内的所有元素都加载完成。

用jQ的人很多人都是这么开始写脚本的:

$(function(){
// do something
});

其实这个就是jq ready()的简写,他等价于:

$(document).ready(function(){
//do something
})
//或者下面这个方法,jQuer的默认参数是:“document”;
$().ready(function(){
//do something
})

这个就是jq ready()的方法就是Dom Ready,他的作用或者意义就是:在DOM加载完成后就可以可以对DOM进行操作。

一般情况先一个页面响应加载的顺序是:域名解析-加载html-加载js和css-加载图片等其他信息。

那么Dom Ready应该在“加载js和css”和“加载图片等其他信息”之间,就可以操作Dom了。

1.window.onload方法

⑴执行时机:

在网页中所有元素(包括元素的所有关联文件)完全加载到浏览器后才执行,即JavaScript 此时可以访问网页中的所有元素。

window.onload=function(){ $(window).load(function(){
//编写代码 等价于 //编写代码
} });

⑵多次使用:

JavaScript的onload事件一次只能保存对一个函数的引用,他会自动用最后面的函数覆盖前面的函数。

function one()
{ alert("one");
} 
function two()
{ alert("two"); 
}
window.onload=one; 
window.onload=two; //运行代码后只有 two

2.$(document).ready()方法

⑴执行时机:在DOM完全就绪时就可以被调用。(这并不意味着这些元素关联的文件都已经下载完毕)

举个例子:$(document).ready()方法明知要DOM就绪就可以操作了,不需要等待所有图片下载完毕。

⑵多次使用:

function one(){ alert("one"); 
} 
function two(){ alert("two"); 
} $(document).ready(function()
{ one(); }); 
$(document).ready(function()
{ two(); 
}); //运行代码后 //先是:one //先是:two
Javascript 相关文章推荐
jQuery 页面载入进度条实现代码
Feb 08 Javascript
js面向对象 多种创建对象方法小结
May 21 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
Jun 18 Javascript
自定义右键属性覆盖浏览器默认右键行为实现代码
Feb 02 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
Jan 07 Javascript
js对文章内容进行分页示例代码
Mar 05 Javascript
jQuery图片轮播功能实例代码
Jan 29 Javascript
angular+bootstrap的双向数据绑定实例
Mar 03 Javascript
js实现简单数字变动效果
Nov 06 Javascript
AngularJS 前台分页实现的示例代码
Jun 07 Javascript
vue移动端微信授权登录插件封装的实例
Aug 28 Javascript
基于vue 动态菜单 刷新空白问题的解决
Aug 06 Javascript
jQuery实现进度条效果代码
Dec 17 #Javascript
JavaScript创建对象的方式小结(4种方式)
Dec 17 #Javascript
javascript日期格式化方法小结
Dec 17 #Javascript
javascript中Date format(js日期格式化)方法小结
Dec 17 #Javascript
js实现下拉列表选中某个值的方法(3种方法)
Dec 17 #Javascript
详解js图片轮播效果实现原理
Dec 17 #Javascript
js和jquery分别验证单选框、复选框、下拉框
Dec 17 #Javascript
You might like
PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
2014/05/10 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
JavaScript 基础问答三
2008/12/03 Javascript
Mootools 1.2 手风琴(Accordion)教程
2009/09/15 Javascript
基于jQuery的日期选择控件
2009/10/27 Javascript
jQuery实现可拖动的浮动层完整代码
2013/05/27 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
2013/10/18 Javascript
在js文件中写el表达式取不到值的原因及解决方法
2013/12/23 Javascript
css结合js制作下拉菜单示例代码
2014/02/27 Javascript
javascript对中文按照拼音排序代码
2014/08/20 Javascript
js实现按一下删除键删除整个单词附demo
2014/09/05 Javascript
Javascript中this的用法详解
2014/09/22 Javascript
JavaScript 学习笔记之基础中的基础
2015/01/13 Javascript
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
easyui messager alert 三秒后自动关闭提示的实例
2016/11/07 Javascript
简单实现js倒计时功能
2017/02/13 Javascript
js实现ATM机存取款功能
2020/10/27 Javascript
vant实现购物车功能
2020/06/29 Javascript
[01:04:32]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第二场 2月23日
2021/03/11 DOTA
在Python中使用pngquant压缩png图片的教程
2015/04/09 Python
Python中使用不同编码读写txt文件详解
2015/05/28 Python
python+matplotlib绘制饼图散点图实例代码
2018/01/20 Python
使用requests库制作Python爬虫
2018/03/25 Python
python使用socket创建tcp服务器和客户端
2018/04/12 Python
python Selenium实现付费音乐批量下载的实现方法
2019/01/24 Python
python flask解析json数据不完整的解决方法
2019/05/26 Python
Python虚拟环境的创建和使用详解
2020/09/07 Python
python如何使用腾讯云发送短信
2020/09/17 Python
大学本科毕业生的自我鉴定
2013/11/26 职场文书
检察官就职演讲稿
2014/01/13 职场文书
妇产医师自荐信
2014/01/29 职场文书
保健品市场营销方案
2014/03/31 职场文书
空气环保标语
2014/06/12 职场文书
赤壁观后感(2)
2015/06/15 职场文书
重温经典:乔布斯在斯坦福大学的毕业演讲(双语)
2019/08/26 职场文书