be a geek-从零开始学编程:无处不在的Javascript 3

无处不在的Javascript

Javascript现在已经无处不在了,也许你正打开的某个网站他可能是node.js+json+javascript+mustache.js完成的,虽然你还没理解上面那些是什么,也正是因为你不理解才需要去学习更多的东西。但是Javascript已经无处不在了,可能会在你手机上的某个app里,在你浏览的网页里,在你IDE中的某个进程中运行的。

重新设计

我们将输出的工作移到函数的外面,

function calc(tang,num){
    return tang*num;
}
document.write(calc(3,4));

接着我们用一种更有意思的方法来写这个问题的解决方案

function calc(tang,num){
    return tang*num;
}
function printResult(tang,num){
    document.write(calc(tang,num));
}
printResult(3, 4)

看上去更专业了一点点,如果我们只需要计算的时候我们只需要调用calc,如果我们需要输出的时候我们就调用printResult的方法。

object和函数

我们还没有说清楚之前我们遇到过的document.write以及Math.sin的语法看上去很奇怪,所以让我们看看他们到底是什么,修改app.js为以及内容

document.write(typeof document);
document.write(typeof Math);

typeof document会返回document的数据类型,就会发现输出的结果是

object object

所以我们需要去弄清楚什么是object。对象的定义是(转载保留:be a geek 4:无处不在的javascript 3)

无序属性的集合,其属性可以包含基本值、对象或者函数。

创建一个object,然后观察这便是我们接下来要做的

store={};
store.tang=4;
store.num=3;
document.write(store.tang*store.num);

我们就有了和document.write一样的用法,这也是对象的美妙之处,只是这里的对象只是包含着基本值,因为

typeof story.tang="number"

一个包含对象的对象应该是这样子的。

store={};
store.tang=4;
store.num=3;
document.writeln(store.tang*store.num);

var wall=new Object();
wall.store=store;
document.write(typeof wall.store);

而我们用到的document.write和上面用到的document.writeln都是属于这个无序属性集合中的函数。

下面代码说的就是这个无序属性集中中的函数。

var IO=new Object();
function print(result){
    document.write(result);
};
IO.print=print;
IO.print("a obejct with function");
IO.print(typeof IO.print);

我们定义了一个叫IO的对象,声明对象可以用

var store={};

又或者是

var store=new Object{};

两者是等价的,但是用后者的可读性会更好一点,我们定义了一个叫print的函数,他的作用也就是document.write,IO中的print函数是等价于print()函数,这也就是对象和函数之间的一些区别,对象可以包含函数,对象是无序属性的集合,其属性可以包含基本值、对象或者函数。

复杂一点的对象应该是下面这样的一种情况。

var Person={name:"phodal",weight:50,height:166};
function dream(){
    future;
};
Person.future=dream;
document.write(typeof Person);
document.write(Person.future);

而这些会在我们未来的实际编编程中用得更多。

你可能感兴趣的:(JavaScript,a,Geek,be,beageek,从零开始学编程,无处不在的Javascript)