在本文中,我们将给您介绍关于将方法附加到对象与使用Javascript中的函数的详细内容,并且为您解答方法传入对象的相关问题,此外,我们还将为您提供关于Javascript中的函数使用方法、javas
在本文中,我们将给您介绍关于将方法附加到对象与使用Javascript中的函数的详细内容,并且为您解答方法传入对象的相关问题,此外,我们还将为您提供关于Java script中的函数使用方法、javascript – 将匿名对象添加到对象、javascript – 无法附加到jQuery包装、JavaScript中的this关键字介绍与使用实例_javascript技巧的知识。
本文目录一览:- 将方法附加到对象与使用Javascript中的函数(方法传入对象)
- Java script中的函数使用方法
- javascript – 将匿名对象添加到对象
- javascript – 无法附加到jQuery包装
- JavaScript中的this关键字介绍与使用实例_javascript技巧
将方法附加到对象与使用Javascript中的函数(方法传入对象)
但是,在使用Clojure一段时间之后,我开始喜欢将数据结构传递给函数来触发行为的方法,对于我的下一个JavaScript项目,我正在考虑尝试以这种方式编写它.
我的问题是,每种编程方式的优缺点是什么?
将方法直接附加到对象(因此,通常是将对象调整到适当位置)与将对象作为纯数据结构传递到函数中的优点/缺点是什么,该函数在处理后将返回新的数据结构.
我在AngularJS中意识到,为了利用双向绑定,您通常需要使用第一个系统,但是像React这样的框架似乎可以利用原位变异或使用新的对象实例.
解决方法
我区分“我的类”,即我控制的代码和“外来类”,即我使用的外部代码 – 无论是内置的东西还是第三方的库.
对于我自己的代码,我经常更喜欢采用OOP方式,所以我宁愿做myObject.doSomething()而不是My.doSomething(对象),但它确实取决于.
对于“外国”代码,我几乎没有“附加”方法.只有绝对特殊的情况.我没有用我的方法扩展内置对象和类.我几乎从不在foreight类和实例中注入方法.
主要原因是兼容性.如果我可能会为ForeignClass添加一些拆分方法是一个好主意,其他人可能会有同样的想法.他们的分裂可能与我的完全不同.看看AngularJS如何考虑这个问题:他们使用$method命名约定来试图减少冲突.
如果你更少关注在外部类或对象中注入方法,而在OOP方面注意更多,那么它实际上取决于用例.不要把你的编程范例放在实际需要之前.如果你有一些领域,你可能会更好地用OO术语来设计它.反之亦然,如果你只是做无状态函数,实际上并不需要实例.
这实际上是JavaScript中最好的东西之一 – 您可以同时实现和使用不同的范例而不会出现任何技术问题.
希望能帮助到你.
PS.其他相关术语之一是anemic data model.
Java script中的函数使用方法
前言
什么是函数,就是把一段相对独立的具有特定功能的代码块封装起来,形成一个独立实体,就是函数,起个名字(函数名),在开发中可以反复调用,函数的作用就是封装一段代码,可以重复使用。
1. 函数的声明及调用
1.1声明
- 关键字声明
function 函数名(){
// 函数体
}
- 表达式声明
var fn = function() {
// 函数体
}
-
特点:
函数声明的时候,函数体并不会执行,只要当函数被调用的时候才会执行。 一个函数一般都特定的用来干 一件 事情
1.2 调用
- 调用函数的语法:
函数名();
-
特点:
函数体只有在调用的时候才会执行,调用需要()进行调用。 可以调用多次(重复使用)
// 声明函数
function sayHi() {
console.log("吃了没?");
}
// 调用函数
sayHi();
// 求1-100之间所有数的和
function getSum() {
var sum = 0;
for (var i = 0; i < 100; i++) {
sum += i;
}
console.log(sum);
}
// 一段代码可以多次调用
getSum();
getSum();
getSum();
1.2 参数
- 为什么要有参数
function getSum() {
var sum = 0;
for (var i = 1; i <= 100; i++) {
sum += i;
}
console.log();
}
// 虽然上面代码可以重复调用,但是只能计算1-100之间的值
// 如果想要计算n-m之间所有数的和,应该怎么办呢?
- 语法:
// 函数内部是一个封闭的环境,可以通过参数的方式,把外部的值传递给函数内部
// 带参数的函数声明
function 函数名(形参1, 形参2, 形参...){
// 函数体
}
// 带参数的函数调用
函数名(实参1, 实参2, 实参3);
- *形参和实参 *
- 形式参数:在声明一个函数的时候,为了函数的功能更加灵活,有些值是固定不了的,对于这些固定不了的值。我们可以给函数设置参数。这个参数没有具体的值,仅仅起到一个占位置的作用,我们通常称之为形式参数,也叫形参。
- 实际参数:如果函数在声明时,设置了形参,那么在函数调用的时候就需要传入对应的参数,我们把传入的参数叫做实际参数,也叫实参。
function fn(a, b) {
console.log(a + b);
}
var x = 5, y = 6;
fn(x,y);
// x,y实参,有具体的值。
// 函数执行的时候会把x,y复制一份给函数内部的a和b,
// 函数内部的值是复制的新值,无法修改外部的x,y
JS 函数在调用时,允许传多个实参,就是实参个数可以比形参个数多;
1.3 函数的返回值
当函数执行完的时候,并不是所有时候都要把结果打印。我们期望函数给我一些反馈(比如计算的结果返回进行后续的运算),这个时候可以让函数返回一些东西。也就是返回值。函数通过return返回一个值
返回值语法:
//声明一个带返回值的函数
function 函数名(形参1, 形参2, 形参...){
//函数体
return 返回值;
}
//可以通过变量来接收这个返回值
var 变量 = 函数名(实参1, 实参2, 实参3);
**返回值详解: ** 如果函数没有显示的使用 return语句 ,那么函数有默认的返回值:undefined 如果函数使用 return语句,那么跟在return后面的值,就成了函数的返回值 如果函数使用 return语句,但是return后面没有任何值,那么函数的返回值也是:undefined 函数使用return语句后,这个函数会在执行完 return 语句之后停止并立即退出,也就是说return后面的所有其他代码都不会再执行。
作业:
- 求1-n之间所有数的和
- 求n-m之间所有数的和
- 求2个数中的最大值
1.4 函数相关的其它事情
1.4.1 匿名函数与自调用函数
匿名函数:没有名字的函数
匿名函数如何使用:
将匿名函数赋值给一个变量,这样就可以通过变量进行调用
匿名函数如果没有任何变量来表示它,那么就不能直接调用来执行,因此可以通过匿名函数的自调用的方式来执行
(function () {
alert(123);
})();
关于自执行函数(匿名函数自调用)的作用:防止全局变量污染。
1.4.2 函数本身也是值
function fn() {}
console.log(typeof fn);
- 函数作为参数
因为函数也是一种值类型,可以把函数作为另一个函数的参数,在另一个函数中调用
function f1(f){
//f = function f2(){
// console.log(2);
//}
f();
}
function f2(){
console.log(2);
}
f1(f2); //2
- 函数做为返回值
因为函数是一种类型,所以可以把函数可以作为返回值从函数内部返回。
function fn(b) {
var a = 10;
return function () {
alert(a+b);
}
}
var f = fn(5);
f(); //15
javascript – 将匿名对象添加到对象
var json = {}; json.a = {name:"a"};
但是,如何以类似的方式将对象添加到现有JavaScript对象而不为其指定关联名称,以便可以通过for()语句访问它.对不起,如果我有点模糊,我对JavaScript对象了解不多.
更新:
我希望最终结果如下所示:
var json = [{name:'a'}{name:'b'}];
解决方法
myArrayVar.push(value);
要么
myArrayVar[myArrayVar.length] = value;
javascript – 无法附加到jQuery包装
为什么不能附加到用于包装另一个元素的元素 – 请参阅下面的示例?
var $test = $('.test'),$test1 = $('.test1'),$move = $('.move'),$testWrapper = $('
总结
以上是小编为你收集整理的javascript – 无法附加到jQuery包装全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
javascript
JavaScript中的this关键字介绍与使用实例_javascript技巧
当创建一个类的时候,如果希望下面new出来的每个类都拥有一些通用的变量或者其他的函数,这个this关键字这是最好的方式。
当然,既然是面向对象的语言,必然存在访问权限的问题,这里也和this关键字息息相关。下面我们来演示一个例子来说明一下这个类的访问权限的问题.
//Person类
function Person(){
var name="abc";//var声明的都是类内部的私有变量,外部无法访问
var age = 20;
this.name2="edg";//this声明的是公开变量,外部可以访问
this.show=function(){//shou方法是公开的方法,可以被外部访问,而且可以访问类内部私有方法
window.alert(name);
}
function show2(){//shouw2方法是类内部的私有方法,不能被外部访问
}
}
var p1 = new Person();
document.writeln(p1.name2+p1.name);
p1.show();
//Person类 www.jb51.net
function Person(){
var name="abc";//var声明的都是类内部的私有变量,外部无法访问
var age = 20;
this.name2="edg";//this声明的是公开变量,外部可以访问
this.show=function(){//shou方法是公开的方法,可以被外部访问,而且可以访问类内部私有方法
window.alert(name);
}
function show2(){//shouw2方法是类内部的私有方法,不能被外部访问
}
}
var p1 = new Person();
document.writeln(p1.name2+p1.name);
p1.show();
这个Person其实就是一个类,类名就是Person,其中声明的变量,var开头的都是私有变量,只能在类的内部实现访
问,而通过this关键字声明的变量是公有的变量,可以在外部访问。当然,只需要公开一个方法,就可以实现外部访
问类内部的私有变量,这个this.show=function(){}就是声明一个共有方法,在类的外部也是可以调用的。当然,以此
类推,直接声明的方法是私有的方法/
下面再看一个例子
function test(){
alert(this.v);
}
var v = 902;
window.test();
function test(){
alert(this.v);
}
var v = 902;
window.test();