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 相关文章推荐
javascript Keycode对照表
Oct 24 Javascript
AngularJS操作键值对象类似java的hashmap(填坑小结)
Nov 12 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
Dec 26 Javascript
C#微信小程序服务端获取用户解密信息实例代码
Mar 10 Javascript
ES6教程之for循环和Map,Set用法分析
Apr 10 Javascript
简单实现js拖拽效果
Jul 25 Javascript
AngularJs每天学习之总体介绍
Aug 07 Javascript
详解微信小程序Page中data数据操作和函数调用
Sep 27 Javascript
浅谈React深度编程之受控组件与非受控组件
Dec 26 Javascript
基于mpvue的小程序项目搭建的步骤
May 22 Javascript
详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决
Apr 14 Javascript
vue中监听返回键问题
Aug 28 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 删除目录下N分钟前创建的所有文件的实现代码
2013/08/10 PHP
php函数连续调用实例分析
2015/07/30 PHP
学习php设计模式 php实现单例模式(singleton)
2015/12/07 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
2016/09/23 PHP
PHP设计模式之工厂方法设计模式实例分析
2018/04/25 PHP
Mootools 1.2教程(21)——类(二)
2009/09/15 Javascript
JS Excel读取和写入操作(模板操作)实现代码
2010/04/11 Javascript
使用JavaScript和C#中获得referer
2014/11/14 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
2014/12/12 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
javascript实现九宫格相加数值相等
2020/05/28 Javascript
详谈Angular路由与Nodejs路由的区别
2017/03/05 NodeJs
用js将long型数据转换成date型或datetime型的实例
2017/07/03 Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
2017/08/28 Javascript
微信小程序 页面滑动事件的实例详解
2017/10/12 Javascript
vue使用$emit时,父组件无法监听到子组件的事件实例
2018/02/26 Javascript
vue实现文字加密功能
2019/09/27 Javascript
vue渲染方式render和template的区别
2020/06/05 Javascript
JavaScript实现鼠标移入随机变换颜色
2020/11/24 Javascript
python实现系统状态监测和故障转移实例方法
2013/11/18 Python
python类和函数中使用静态变量的方法
2015/05/09 Python
Python的爬虫包Beautiful Soup中用正则表达式来搜索
2016/01/20 Python
Python批量提取PDF文件中文本的脚本
2018/03/14 Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
2020/04/20 Python
HTML5 textarea高度自适应的两种方案
2020/04/08 HTML / CSS
某IT外企面试题-二分法求方程!看看大家的C++功底
2015/07/04 面试题
外贸主管求职简历的自我评价
2013/10/23 职场文书
教师求职自荐信
2014/03/09 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
小学端午节活动总结
2015/02/11 职场文书
民主评议教师党员自我评价
2015/03/04 职场文书
2015年体育教学工作总结
2015/05/20 职场文书
七年级作文之英语老师
2019/10/28 职场文书
pytorch DataLoader的num_workers参数与设置大小详解
2021/05/28 Python
python单元测试之pytest的使用
2021/06/07 Python
mybatis-plus模糊查询指定字段
2022/04/28 Java/Android