js 高级函数 之示例
js 高级函数
作用域安全构造函数
function Person(name, age)
{
this.name = name;
this.age = age;
}
var person1 = Person("lin3615", 26);
//alert(window.name); // lin3615
alert(person1.name); // 出错,此时成了全局的了
========================
function Person(name, age)
{
this.name = name;
this.age = age;
}
var person1 = new Person("lin3615", 26);
//alert(window.name); // 为空
alert(person1.name); // lin3615
================
为了防止没有使用 new 时实例化,出现跨域,可用以下方法
function person(name, age)
{
if(this instanceof person)
{
this.name = name;
this.age = age;
}else
{
return new person(name,age);
}
}
var person1 = person("lin3615", 26);
//alert(window.name); // 为空
alert(person1.name); // lin3615
=========================
以下代码中 Polygon 构造函数是安全的,然后 Rectangle 构造函数则不是,一个 Rectangle 实例之后,这个实例应该通过
Polygon.call() 来继承 Polygon 的 sides 属性。但由于 Polygon
构造函数是作用域是安全的, this 对象并非 Polygon 的实例。所以
会创建并返回一个新的 Polygon 对象
function Polygon(sides)
{
if(this instanceof Polygon)
{
this.sides = sides;
this.getArea = function (){
return 0;
};
}else
{
return new Polygon(sides);
}
}
function Rectangle(width, height)
{
Polygon.call(this, 2);
this.width = width;
this.height = height;
this.getArea = function(){
return this.width *
this.height;
};
}
var rect = new Rectangle(5, 10);
alert(rect.sides); // undefined
如果结合原型链则可以解决这个问题
function Polygon(sides)
{
if(this instanceof Polygon)
{
this.sides = sides;
this.getArea = function (){
return 0;
};
}else
{
return new Polygon(sides);
}
}
function Rectangle(width, height)
{
Polygon.call(this, 2);
this.width = width;
this.height = height;
this.getArea = function(){
return this.width *
this.height;
};
}
Rectangle.prototype = new Polygon();
var rect = new Rectangle(5, 10);
alert(rect.sides); // 2
js 高级函数 之示例的更多相关文章
- js高级-函数的四种调用模式
1.对象方法调用模式 方法内部的this指向当前调用者的对象d 定义类 (构造函数) function Dog (dogName){ //创建一个空对象 让空对象==this this.name ...
- js高级-函数变量提升
var a = 10; function f1(){ console.log(a) //undefined 函数变量提升了 函数执行之前想创建了函数的EC 把函数里面声明的变量初始化undefine ...
- JS高级——函数的调用模式
函数调用模式一共有四种 <script> //1.函数模式 //this指向window全局对象 //2.方法模式 //this指向调用这个方法的对象 //3.构造函数模式 //this ...
- JS高级 — 函数中的this指向问题
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- JS高级 — 函数的声明和表达式
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- JS高级---函数作为返回值使用拓展,排序
函数作为返回值使用拓展,排序 排序, 每个文件都有名字,大小,时间,都可以按照某个属性的值进行排序 函数作为返回值 函数作为参数 //排序,每个文件都有名字,大小,时间,都可以按照某个属性的值进行排序 ...
- JS高级---函数作为参数使用
函数作为参数使用 var arr = [1, 100, 20, 200, 40, 50, 120, 10]; //排序 arr.sort(); console.log(arr); 排序---函数作为参 ...
- JS高级---函数作为返回值使用
函数作为返回值使用 function f1() { console.log("f1函数开始"); return function () { console.log("函数 ...
- JS高级---函数的几个成员
函数的几个成员 函数中有一个name属性----->函数的名字, name属性是只读的, 不能修改 函数中有一个arguments属性--->实参的个数 函数中有一个length属性--- ...
随机推荐
- Joomla的在线视频播放插件:AllVideos
一个很好的插件,只需要在文章中插入一条简单的语句就可以实现视频播放,视频可以位于网站服务器上或其他视频网站的. 例如:{f4v}ShaHua-H264{/f4v} 我在使用中只有一个地方觉得需要更 ...
- JAVA 调用Axis2 code generator 生成的webservice
以下代码为调用 JAVA 调用Axis2 code generator 生成的webservice的代码. package test; import java.rmi.RemoteException; ...
- PHP学习笔记-00
PHP这门语言的就不用多说啦,使用率非常高的一门后端开发语言.之前一直希望可以学习了解一下PHP.之前主要在做Java和OC这类语言的开发,对于PHP这种脚本语言(动态语言)还是了解甚少. 近期看了一 ...
- macos 配置 golang 开发环境
初次接触golang这门编程语言,一下子就喜欢上了,语法简洁优雅,对于以前有c/c++编程经验的人来说会更加有亲切感. 仅仅学习了一天就能应用beego框架和mogodb数据库开发一个rest api ...
- SAP HANA STRING_AGG
HANA Version 1.00.73.00.389160 不支持STRING_AGG,所以只能,,,,,,,, DROP PROCEDURE ""."ZCONCAT_ ...
- mysql 加载文本数据
可以配置导入哪几列,每个字段用什么隔开,每行用什么隔开,也可以单独设置某个字段的值. 详细看代码: LOAD DATA INFILE 'D:/aa.txt' INTO TABLE aa FIELDS ...
- Android自定义“图片+文字”控件四种实现方法之 二--------个人最推荐的一种
http://blog.csdn.net/yanzi1225627/article/details/8633872 第二种方法也要新建一个图片+文字的xml布局文件,然后写一个类继承自LinearLa ...
- UNIX环境高级编程---标准I/O库
前言:我想大家学习C语言接触过的第一个函数应该是printf,但是我们真正理解它了吗?最近看Linux以及网络编程这块,我觉得I/O这块很难理解.以前从来没认识到Unix I/O和C标准库I/O函数压 ...
- 错误ERROR datanode.DataNode (DataXceiver.java:run(278)) - hadoop07:50010DataXceiver error processing unknown operation src:127.0.0.136479 dst:127.0.0.150010
原因: Ambari 每分钟会向datanode发送"ping"连接一下去确保datanode是正常工作的.否则它会触发alert.但是datanode并没有处理空内容的逻辑,所以 ...
- Flume NG中的ElasticSearch Sink
ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Apach ...