当命名函数中存在对象时,如何访问该函数之外的对象。
function a(){
var someobj = { b: "abc"}
console.log(someobj)
}
我试图设置一个变量,然后访问它,但出现错误。
var bla = function a() {
var someobj = {
b: "abc"
}
console.log(someobj)
}
console.log(bla().someobj)
答案 0 :(得分:1)
这是一个局部变量,其作用域在该函数内部。
可能您对如何将函数称为constructor
感到困惑。
new bla()
因此,您可以通过称为constructor
的函数访问实例化对象的属性。此外,要设置属性,您需要使用上下文this
。
var bla = function a() {
this.someobj = {b: "abc"};
//^^^^
// console.log(someobj)
}
console.log(new bla().someobj)
// ^^^^^^^^^
答案 1 :(得分:1)
您需要在函数中返回该对象。
添加“。” <?php
/**
* This is the model class for table "tbl_user".
*
* The followings are the available columns in table 'tbl_user':
* @property integer $id
* @property string $username
* @property string $password
* @property string $email
* @property string $image
* @property double $lat
* @property double $lng
*/
class User extends CActiveRecord
{
/**
* @return string the associated database table name
*/
public function tableName()
{
return 'tbl_user';
}
/**
* @return array validation rules for model attributes.
*/
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('username, password, email', 'required'),
array('lat, lng', 'numerical'),
array('username, password, email', 'length', 'max'=>128),
array('image', 'length', 'max'=>100),
// The following rule is used by search().
// @todo Please remove those attributes that should not be searched.
array('id, username, password, email, image, lat, lng', 'safe', 'on'=>'search'),
);
}
/**
* @return array relational rules.
*/
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
);
}
/**
* @return array customized attribute labels (name=>label)
*/
public function attributeLabels()
{
return array(
'id' => 'ID',
'username' => 'Username',
'password' => 'Password',
'email' => 'Email',
'image' => 'Image',
'lat' => 'Lat',
'lng' => 'Lng',
);
}
/**
* Retrieves a list of models based on the current search/filter conditions.
*
* Typical usecase:
* - Initialize the model fields with values from filter form.
* - Execute this method to get CActiveDataProvider instance which will filter
* models according to data in model fields.
* - Pass data provider to CGridView, CListView or any similar widget.
*
* @return CActiveDataProvider the data provider that can return the models
* based on the search/filter conditions.
*/
public function search()
{
// @todo Please modify the following code to remove attributes that should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('id',$this->id);
$criteria->compare('username',$this->username,true);
$criteria->compare('password',$this->password,true);
$criteria->compare('email',$this->email,true);
$criteria->compare('image',$this->image,true);
$criteria->compare('lat',$this->lat);
$criteria->compare('lng',$this->lng);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
/**
* Returns the static model of the specified AR class.
* Please note that you should have this exact method in all your CActiveRecord descendants!
* @param string $className active record class name.
* @return User the static model class
*/
public static function model($className=__CLASS__)
{
return parent::model($className);
}
}
之后不返回任何内容与bla()
undefined.someobj