js对象,原型,call,apply浅析
//对象直接量,创建对象最简单的方式是在js里使用对象直接量
var book = {
"main title": "js", //属性里有空格,要用引号
"s-t": "the microsoft", //有连字符也要用引号
"for": "all start", //keyword也要用引号
x: 2,
author: { fistname: "jiangfan" }
};
alert(book.x);
//new运算符创建并初始化一个新对象,关键字new后跟随一个函数调用。这里的函数成为构造函数(constructor),
//构造函数用以初始化一个新创建的对象。
var o = new Object(); //创建一个空对象,和{}一样
var a = new Array(); //创建一个空数组,和[]一样
var d = new Date(); //创建一个表示当前时间的Date对象
var r = new RegExp("js"); //创建一个可以进行模式匹配的EegExp对象
//原型介绍:每一个js对象(null除外)都和另一个对象关联。“另一个”对象就是原型,每一个对象都从原型继承属性
//所以通过对象直接量创建的对象都具有同一个原型对象,可以通过Object.prototype获得对原型对象的引用。
//通过new和构造函数调用创建的对象的原型就是构造函数的prototype属性的值。所以,同使用{}创建对象一样,通过new Object()
//创建的对象也继承Object.prototype。new Array()创建的对象的原型是Array.prototype,new Date()创建的对象原型是Date.prototype.
//本例完成:通过原型继承创建一个新对象
function inherit(p) {
if (p == null)
throw TypeError();
if (Object.create)
return Object.create(p);
var t = typeof p;
if (t !== "object" && t !== "function")
throw TypeError();
function f() { };
f.prototype = p;
return new f();
}
var obj = {
fa: "jf",
ofun: function (a1, a2) {
alert(a1 + a2);
},
applys: function (arg) {
alert(arg[0] + arg[1]);
}
}, tempobj;
tempobj = {};
obj.ofun.call(tempobj, "hello", "world");
obj.applys.call(tempobj, ["hello", "world"]);
//call()和apply()例子如下:
//想通过o的方法来调用函数f(),可以选择call(),apply()
f.call(o);
//f.apply(o);
//以上两个代码解释如下:
//假设对象o中预先不存在名为m的属性
o.m = f; //将f存储为o的临时方法
o.m();
delete o.m //将临时方法删除
js对象有三个属性,1:原型属性(prototype),2,类属性(调用toString()返回如下格式字符串:[object,class].
//对象的类属性(class attribute)是一个字符串,用以表示对象的类型信息。
//classof可以传递任意类型的参数
function classof(o)
{
if(o===null)
return "Null";
if(o===undefined)
return "Undefined";
return Object.prototype.toString.call(o).slice(8,-1)
}
js对象,原型,call,apply浅析的更多相关文章
- 关于JS对象原型prototype与继承,ES6的class和extends · kesheng's personal blog
传统方式:通过function关键字来定义一个对象类型 1234567891011 function People(name) { this.name = name}People.prototype. ...
- js对象原型prototype
javascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用. 每一个构造函数都有一个属性叫做原型 1.1. 原型法设 ...
- JS对象原型的理解
基于原型的语言 JavaScript 常被描述为一种基于原型的语言 (prototype-based language)——每个对象拥有一个原型对象,对象以其原型为模板.从原型继承方法和属性.原型对象 ...
- js对象原型链
JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象.这个对象的所有属性和方法,都会被构造函数的所拥有. 这也就意味着,我们可以把所有对象实例需要共享的属性和方 ...
- js对象系列【一】深层理解对象与原型
我们先从盘古开天辟地时捋一捋对象: 从宏观内容来讲,javascript是一个属性的集合,包括值,函数,而整个集合也可以类比为一个对象. js = { a的变量名: a的值, ... 函数b: fun ...
- 关于js的对象原型继承(一)
javascript中,对象的继承是通过原型去继承. 可以这样理解:js中的对象,包含的除了属性和方法,还有一个最基本的原型__proto__对象.这个原型__proto__指向谁,这个对象就继承谁. ...
- jquery实现点击展开列表同时隐藏其他列表 js 对象操作 对象原型操作 把一个对象A赋值给另一个对象B 并且对象B 修改 不会影响 A对象
这篇文章主要介绍了jquery实现点击展开列表同时隐藏其他列表的方法,涉及jquery鼠标事件及节点的遍历与属性操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了jquery实现点击 ...
- JS对象继承与原型链
1.以复制方式实现的继承 1.1浅拷贝 基本类型的复制 var parent = { lanage: "chinese" } var child = { name: "x ...
- JS对象与原型
一. JS的对象 1.1 创建对象的几种方式 1.1.1 通过字面量创建对象 在js中,一对{} 其实就是一个对象 var person = { name: "tom", age: ...
随机推荐
- 【转】工科男IT职场求生法则
转自:http://www.36dsj.com/archives/3459 我在IT职场打滚超过10年了,从小小的程序员做到常务副总.相对于其它行业,IT职场应该算比较光明的了,但也陷阱重重,本文说说 ...
- jQuery + jQuery Mobile 实现省市二级下拉列表页面
一.需求: 提供省.市下拉列表,当用户选择省一级下拉列表项后,市下拉列表的各个选项自动变为该省对应的城市列表. 二.效果: 三.实现: 1.省市json数据,来自: http://www.cnblog ...
- URL是什么?
URL是统一资源定位符,有时也被俗称为网页地址. 如同在网络上的门牌,是因特网上标准的资源的地址(Address). 在因特网的历史上,统一资源定位符的发明是一个非常基础的步骤.统一资源定位符的语法是 ...
- 小票打印机指令集封装(支持EPSON指令)
最近写了一些关于小票打印机的程序,不难,但是记录下来,作为足迹吧. 现在市场上的小票机基本都支持EPSON指令.指令集文档 对指令集进行了自己的封装,方便以后调用: package aheiziUti ...
- html页面head区域的编码书写规范
今天我们简单的介绍一下head区域主要放置了内容.这里就不强调css和javascript了,这两者是大家所熟知的. head区一般必须加入的标识有: 公司版权注释 <!--- the site ...
- TypeHandler的简单实例
转自:http://ccchhhlll1988-163-com.iteye.com/blog/1420149 TypeHandler是MyBatis config文件中可选的配置选项,其可以对实体属性 ...
- iOS开发——语法OC篇&Block回顾
Block回顾 这里知识简单介绍一下关于Block的语法,如果你觉得这里很简单或者想学习更深入的的使用清查看记者之前写的使用block传值和高级Block使用: http://www.cnblogs. ...
- java 哈夫曼编码
//哈夫曼树类 public class HaffmanTree { //最大权值 ; int nodeNum ; //叶子结点个数 public HaffmanTree(int n) { this. ...
- 基于sqlite的Qt 数据库封装
[代码] mydata.h 10 #ifndef MYDATA_H 11 #define MYDATA_H 12 #include <QObject> 13 #include <QS ...
- CentOS 7 ibus 导入第三方词库
CentOS 7 自带的输入法是ibus默认有带拼音输入法“Intelligent Pinyin 1.6.91“,但是在使用过程中发现很多词汇没有.所以就想捣鼓一下,怎么把像搜狗或者其他输入法的数据库 ...