JS的语法跟swift很像,以下代码有几个知识点:
- 函数的定义
- 匿名函数的使用,作为参数/返回值,和OC的block,swift的闭包差不多。
- 变量的作用域:JS变量的作用域根据函数来;OC变量的作用域根据{}来
- 创建对象的两种方式。
<script>
//1.1 加法运算
function sum(num1,num2) {
return num1 + num2;
}
// 如何调用
var result = sum(12,20);
console.log(result)
//1.2 万能的加法函数
function sum2(numbers) {
var result = 0;
for(var i in numbers){
result += numbers[i];
}
return result;
}
var result1 = sum2([3213,23,21,312,321,312,31]);
console.log(result1);
//1.3 匿名函数 -- 相当于OC中的Block -- 相当于Swift中的闭包
var res = function () {
console.log('我是匿名函数');
}
//调用匿名函数
function funct(block) {
block();
}
funct(res);
//JS中的闭包!!!
function func1(num1) {
return function (num2) {
return num1 + num2;
}
}
var temp = func1(4);
var temp2 = temp(5);
console.log(temp2);
//作用域
//代码块的作用域
var t = 'hank'; //全局变量
if(true){
var t = 'Dream'; //JS中哥么还是一个全局变量!!
}
console.log(t);
//函数的作用域
function test() {
var t = 'Jack';//里面就是局部变量!!!
}
test();
console.log(t);
//这是一种写法
var obj = new Object();//创建一个对象obj
obj.age = 5;//给对象定义属性
obj.click = function () { //创建对象函数
alert("我被单击了");
}
//另一种写法
var obj1 = {
age:5,
click:function () {
alert("我也被点击了");
}
}
</script>
创建对象的这两种方式都有个弊端,每次创建同类型的对象都要写一样的代码,属性越多重复代码就越多,那怎么进行抽象封装?就要想到类,构造函数,像iOS中的构造函数是alloc、init,那么JS的构造函数要怎么创建呢?两步如下:
- 函数返回对象
- new 对象
<script>
//普通函数
//new
var Dog = function (name,age,height) {
this.name = name;
this.age = age;
this.height = height;
this.eat = function (someThing) {
console.log(this.name + '吃'+someThing)
};
this.run = function (someWhere) {
console.log(this.name + '跑'+someWhere)
}
}
//创建对象
var dog1 = new Dog('小黄',18,1.1)
var dog2 = new Dog('旺财',17);
console.log(dog1,dog2);
dog1.eat('板烧鸡腿堡')
dog2.eat('叉烧包')
</script>
JS创建对象
<script>
//1.创建对象
var dog={
name:'xiaohuang',
age:18,
height:1.2,
dogFriends:['laifu','lisi'],
eat:function (someThing) {
console.log(this.name+'吃!'+someThing);
},
//this就是此函数属于哪个对象,那么this就代表这个对象!
run:function (where) {
console.log(this.age+'跑'+where);
}
};//object
console.log(dog.name,dog.age);
dog.eat('板烧鸡腿堡');
dog.run('家里');
</script>
网友评论