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 相关文章推荐
Js实现动态添加删除Table行示例
Apr 14 Javascript
JavaScript中使用typeof运算符需要注意的几个坑
Nov 08 Javascript
AngularJs动态加载模块和依赖注入详解
Jan 11 Javascript
js+canvas绘制五角星的方法
Jan 28 Javascript
WEB前端开发框架Bootstrap3 VS Foundation5
May 16 Javascript
js实现上传图片预览方法
Oct 25 Javascript
AngularJS使用angular.bootstrap完成模块手动加载的方法分析
Jan 19 Javascript
vue-cli如何添加less 以及sass
Jul 06 Javascript
基于react后端渲染模板引擎noox发布使用
Jan 11 Javascript
利用hasOwnProperty给数组去重的面试题分享
Nov 05 Javascript
JavaScript遍历DOM元素的常见方式示例
Feb 16 Javascript
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
Jun 24 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 函数使用方法与函数定义方法
2010/05/09 PHP
PHP无限分类代码,支持数组格式化、直接输出菜单两种方式
2011/05/18 PHP
php对数组排序代码分享
2014/02/24 PHP
destoon之一键登录设置
2014/06/21 PHP
php+mysql实现数据库随机重排实例
2014/10/17 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
2016/01/07 PHP
关于PHP文件的自动运行方法分析
2016/05/13 PHP
既简单又安全的PHP验证码 附调用方法
2016/06/02 PHP
JObj预览一个JS的框架
2008/03/13 Javascript
从零开始学习jQuery (十) jQueryUI常用功能实战
2011/02/23 Javascript
javascript:history.go()和History.back()的区别及应用
2012/11/25 Javascript
使用JS画图之点、线、面
2015/01/12 Javascript
javascript中关于&& 和 || 表达式的小技巧分享
2015/04/10 Javascript
使用CoffeeScrip优美方式编写javascript代码
2015/10/28 Javascript
JavaScript与ActionScript3两者的同性与差异性
2016/09/22 Javascript
JQuery 动态生成Table表格实例代码
2016/12/02 Javascript
微信小程序组件之srcoll-view的详解
2017/10/19 Javascript
原生js封装添加class,删除class的实例
2017/11/06 Javascript
vue遍历生成的输入框 绑定及修改值示例
2019/10/30 Javascript
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
Python编程中归并排序算法的实现步骤详解
2016/05/04 Python
django 创建过滤器的实例详解
2017/08/14 Python
Python实现PS滤镜特效之扇形变换效果示例
2018/01/26 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
python正则表达式之对号入座篇
2018/07/24 Python
python 使用值来排序一个字典的方法
2018/11/16 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
PyCharm 在Windows的有用快捷键详解
2020/04/07 Python
html5教你做炫酷的碎片式图片切换 (canvas)
2017/07/28 HTML / CSS
Interhome丹麦:在线预订度假屋和公寓
2019/07/18 全球购物
如果NULL定义成#define NULL((char *)0)难道不就可以向函数传入不加转换的NULL了吗
2012/02/15 面试题
优秀毕业生求职信范文
2014/01/02 职场文书
铁路工务反思材料
2014/02/07 职场文书
单位工作证明范文
2014/09/14 职场文书
导游词之黄帝陵景区
2019/09/16 职场文书
Python干货实战之八音符酱小游戏全过程详解
2021/10/24 Python